log4j格式详解

2】log4j 格式详解

 

红唇 log4j.rootLogger=日志级别,appender1, appender2, ….

  • 日志级别:ALL<DEBUG<INFO<WARN<ERROR<FATAL<OFF,不区分大小写
  • 注意,需在控制台输入,只需将其中一个appender定义为stdout即可
  • 注意,rootLogger默认是对整个工程生效
  • 注意,如果只想对某些包操作,那么:log4j.logger.com.hutu=info, stdout,表示该日志对package com.hutu生效
  • 注意,这样做可以区分dev/线上,也可以减小性能影响:if(log.isDebugEnabled()){log.debug();}

红唇 log4j.appender.appender1=org.apache.log4j.日志输出到哪儿

  • ConsoleAppender(控制台)
  • FileAppender(文件)
  • DailyRollingFileAppender(每天产生一个日志文件)
  • RollingFileAppender(文件大小到达指定尺寸时产生一个新的文件)
  • WriteAppender(将日志信息以流格式发送到任意指定的地方)
  • JDBCAppender(将日志信息保存到数据库中)

红唇 log4j.appender.appender1.File=文件目录及文件

${user.home}/logs/...

红唇 log4j.appender.appender1.MaxFileSize=最大文件大小

红唇 log4j.appender.appender1.MaxBackupIndex=备份文件个数

  • 其中,appender1是在第一行定义过的;
  • 文件目录及文件,例如,/home/admin/logs/hutudan.log
  • 最大文件大小,例如,100KB
  • 备份文件个数,例如,1

红唇 log4j.appender.ServerDailyRollingFile.DatePattern=日志后缀格式

  • 例如,'.'yyyy-MM-dd

红唇 log4j.appender.appender1.layout=org.apache.log4j.日志布局格式

  • HTMLLayout(以HTML表格形式布局)
  • SimpleLayout(包含日志信息的级别和信息字符串)
  • TTCCLayout(包含日志产生的时间,执行绪,类别等信息)
  • PatternLayout(可以灵活的指定布局格式,常用

红唇 log4j.appender.appender1.layout.ConversionPattern=日志输出格式

  1. 例如,%d - %m%n或%d{yyyy-MM-dd HH:mm:ss} %p [%c] %m%n
  2. %c 输出日志信息所属的类的全名
  3. %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy-M-dd HH:mm:ss },输出类似:2002-10-18- 22:10:28
  4. %f 输出日志信息所属的类的类名
  5. %l 输出日志事件的发生位置,即输出日志信息的语句处于它所在的类的第几行
  6. %m 输出代码中指定的信息,如log(message)中的message
  7. %n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”
  8. %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL。如果是调用debug()输出的,则为DEBUG,依此类推
  9. %r 输出自应用启动到输出该日志信息所耗费的毫秒数
  10. %t 输出产生该日志事件的线程名
  11. 可参考:http://blog.sina.com.cn/s/blog_4e4dd5570100qowy.html

红唇 log4j.appender.ServerDailyRollingFile.Append=true

  • 例如,不解释,追加往后写便是

红唇 总结一下:

  • Logger类:完成日志记录,设置日志信息级别
  • Appender类:决定日志去向,终端、DB、硬盘
  • Layout类:决定日志输出的样式,例如包含当前线程、行号、时间

 

转自:http://www.cnblogs.com/alipayhutu/archive/2012/06/21/2558249.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 下面是一个简单的Java代码示例,可以解析log4j格式的日志文件: ```java import java.io.BufferedReader; import java.io.FileReader; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class Log4jParser { public static void main(String[] args) { String logFile = "path/to/your/log/file.log"; try (BufferedReader reader = new BufferedReader(new FileReader(logFile))) { String line; while ((line = reader.readLine()) != null) { String[] parts = line.split("\\s", 4); // 拆分日志行 if (parts.length >= 4) { String timestamp = parts[0] + " " + parts[1]; // 时间戳 String level = parts[2]; // 日志级别 String message = parts[3]; // 日志消息 Date date = parseTimestamp(timestamp); // 解析时间戳 System.out.printf("%s [%s] %s\n", date, level, message); // 打印解析结果 } } } catch (Exception e) { e.printStackTrace(); } } private static Date parseTimestamp(String timestamp) throws ParseException { SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss,SSS"); return format.parse(timestamp); } } ``` 在此示例中,我们使用BufferedReader类逐行读取日志文件,并使用String.split()方法拆分每一行,从而获取时间戳、日志级别和日志消息。我们将时间戳转换为Date对象,以便进行进一步的处理和格式化输出。 请注意,这只是一个简单的示例代码,实际的实现可能需要更复杂的逻辑来处理各种情况,例如多行消息或不同的日志级别格式。 ### 回答2: 要解析log4j格式的日志,可以使用Java中的正则表达式和字符串操作来提取日志中的各个字段。 首先,读取log文件并将每行日志存储在字符串数组中。可以使用Java中的文件读取和字符串操作方法来实现这一步骤。 接下来,对每一行日志应用正则表达式来提取需要的字段。log4j的日志格式通常包含时间戳、日志级别和具体日志消息。可以使用正则表达式来匹配这些字段并将其存储在对应的变量中。 例如,可以使用如下的正则表达式来匹配log4j日志的时间戳: String regexTimestamp = "\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}"; 使用Java中的Pattern和Matcher类来进行匹配: Pattern patternTimestamp = Pattern.compile(regexTimestamp); Matcher matcherTimestamp = patternTimestamp.matcher(logLine); 然后,使用matcherTimestamp.find()方法来查找匹配的时间戳,并通过matcherTimestamp.group()方法来获取匹配的结果。 类似地,可以使用类似的步骤来提取日志级别和具体日志消息的字段。 最后,将提取的字段进行处理和存储,可以将它们打印出来或存储到其他地方,根据具体需求进行相应的操作。 以上就是使用Java解析log4j格式日志的一个简单示例。具体实现中可能还需要考虑异常处理、文件读取和写入等其他细节。 ### 回答3: 在Java中解析log4j格式的日志文件,我们可以使用log4j库提供的API方法来实现。以下是一个简单的代码示例: ```java import org.apache.log4j.Logger; import org.apache.log4j.PatternLayout; import org.apache.log4j.spi.LoggingEvent; import org.apache.log4j.spi.ThrowableInformation; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; public class Log4jParser { public static void main(String[] args) { String logFilePath = "path/to/logfile.log"; parseLog4jLog(logFilePath); } public static void parseLog4jLog(String filePath) { try (BufferedReader reader = new BufferedReader(new FileReader(filePath))) { String line; Logger logger = Logger.getLogger(Log4jParser.class); PatternLayout layout = new PatternLayout(); while ((line = reader.readLine()) != null) { LoggingEvent logEvent = layout.parse(line); String logMessage = logEvent.getMessage().toString(); String logLevel = logEvent.getLevel().toString(); String logTimestamp = logEvent.getTimeStamp() + ""; ThrowableInformation throwableInfo = logEvent.getThrowableInformation(); if (throwableInfo != null) { String exceptionStacktrace = throwableInfo.getThrowableStrRep()[0]; // 对于包含异常信息的log,可以通过 throwableInfo 获取异常栈信息 } // 处理解析的日志信息,可根据需要进行相应的业务逻辑处理 System.out.println("Timestamp: " + logTimestamp); System.out.println("Level: " + logLevel); System.out.println("Message: " + logMessage); } } catch (IOException e) { e.printStackTrace(); } } } ``` 以上代码中,我们使用`BufferedReader`从日志文件中逐行读取日志内容。然后,我们通过`PatternLayout`的`parse`方法将每行日志内容解析为`LoggingEvent`对象。通过`LoggingEvent`对象,我们可以获取日志的时间戳、日志级别、日志消息以及可选的异常栈信息。 在代码示例中,我们简单示范了如何处理解析的日志信息,你可以根据实际需求进行业务逻辑处理或其他操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值