大同网站建设开发,安平谁做网站好,中文网站建设计划书,温州网站建目录1. log4j 是什么1. 日志管理工具2. 有哪些组成部分#xff1f;3. 日志级别2. 输出端与日志格式化器Appender#xff08;输出端#xff09;Layout#xff08;日志格式化器#xff09;3. log4j.properties占位符#xff0c;格式化日志4. 使用1. log4j 是什么
1. 日志管…
目录1. log4j 是什么1. 日志管理工具2. 有哪些组成部分3. 日志级别2. 输出端与日志格式化器Appender输出端Layout日志格式化器3. log4j.properties占位符格式化日志4. 使用1. log4j 是什么
1. 日志管理工具
log4j 是 Apache 的一个开源项目 官网 http://jakarta.apache.org/log4j通过在项目中使用 Log4J我们可以控制日志信息输出到控制台、文件、GUI 组件、甚至是数据库中。我们可以控制每一条日志的输出格式通过定义日志的输出级别 可以更灵活的控制日志的输出过程。方便项目的调试。
对应的slf4j也是日志管理工具
一般将日志输出到文件。或者将日志输出到数据库做成对应的日志管理系统。 方便对程序分析做出改正。
2. 有哪些组成部分
log4j 主要由 Loggers (日志记录器)、Appenders输出端 和 Layout日志格式化器组成。 其中 Loggers 控制日志的输出级别与日志是否输出 Appenders 指定日志的输出方式输出到控制台、文件等 Layout 控制日志信息的输出格式。
3. 日志级别
OFF 最高日志级别关闭所有日志FATAL 将会导致应用程序退出的错误ERROR 发生错误事件但仍不影响系统的继续运行WARN 警告即潜在的错误情形INFO 一般和在粗粒度级别上强调应用程序的运行全程DEBUG 一般用于细粒度级别上对调试应用程序非常有帮助ALL 最低等级打开所有日志记录一般只使用4个级别优先级从高到低为 ERROR WARN INFO DEBUG注意是error只会记录error级别及fatal, off的错误
2. 输出端与日志格式化器
Appender输出端
Appender 用来指定日志输出到哪个地方可以同时指定日志的输出目的地。Log4j 常用的输出目的地有以下几种 ConsoleAppender 将日志输出到控制台 FileAppender 将日志输出到文件中 DailyRollingFileAppender 将日志输出到一个日志文件并且每天输出到一个新的文件 RollingFileAppender 将日志信息输出到一个日志文件并且指定文件的尺寸当文件大 小达到指定尺寸时会自动把文件改名同时产生一个新的文件 JDBCAppender 把日志信息保存到数据库中
Layout日志格式化器
HTMLLayout 格式化日志输出为HTML表格形式 SimpleLayout 简单的日志输出格式化打印的日志格式为info - message PatternLayout 最强大的格式化期可以根据自定义格式输出日志如果没有指定转换格式就是用默认的转换格式
3. log4j.properties
在d盘创建log文件夹日志会自动输出到log下
#总控制 日志级别 使用哪些方式输出。 以error级别只会logger.error(e)输出
log4j.rootLogger error,stdout,D,E,F#将日志输出到控制台
log4j.appender.stdout org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target System.out
log4j.appender.stdout.layout org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern [%-5p] %d{yyyy-MM-dd HH\:mm\:ss,SSS} method\:%l%n%m%n #输出至文件 级别 DEBUG
log4j.appender.D org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File D\://logs/log.log
log4j.appender.D.Append true
log4j.appender.D.Threshold DEBUG
log4j.appender.D.layout org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern %-d{yyyy-MM-dd HH\:mm\:ss} [ %t\:%r ] - [ %p ] -[%l] %m%n #输出至文件 级别 ERROR
log4j.appender.E org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File D\://logs/error.log
log4j.appender.E.Append true
log4j.appender.E.Threshold ERROR
log4j.appender.E.layout org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern %-d{yyyy-MM-dd HH\:mm\:ss} [ %t\:%r ] - [ %p ] -[%l] %m%n#输出至html文件
log4j.appender.Forg.apache.log4j.DailyRollingFileAppender
log4j.appender.F.layoutorg.apache.log4j.HTMLLayout
log4j.appender.F.FileD\:\\logs\\index.html
log4j.appender.F.layout.ConversionPattern %-d{yyyy-MM-dd HH\:mm\:ss} [ %t\:%r ] - [ %p ] -[%l] %m%n占位符格式化日志
%m 输出代码中指定的日志信息
%p 输出优先级及 DEBUG、INFO 等
%n 换行符Windows平台的换行符为 \nUnix 平台为 \n
%r 输出自应用启动到输出该 log 信息耗费的毫秒数
%c 输出打印语句所属的类的全名
%t 输出产生该日志的线程全名
%d 输出服务器当前时间默认格式为 ISO8601也可以在后面指定格式。如%d{yyyy年MM月dd日 HH:mm:ss}
%l 输出日志时间发生的位置包括类名、发生的线程以及在代码中的行数如Test.main(Test.java:10)
%F 输出日志消息产生时所在的文件名称
%L 输出代码中的行号
%x 输出和当前线程相关的 NDC嵌套诊断环境4. 使用
private static Logger logger Logger.getLogger(StudentController.class);Controller
public class AuthorAction extends BaseAction{// 日志对象private static Logger logger Logger.getLogger(AuthorAction.class);private AuthorService authorService;Autowiredpublic void setAuthorService(AuthorService authorService) {this.authorService authorService;}//查询所有书籍public String findAuthor(){logger.info(查询所有书籍 start);try{ListAuthor authorList authorService.findAuthor();this.getRequest().setAttribute(authorList, authorList);SimpleDateFormat ft new SimpleDateFormat(yyyy-MM-dd);System.out.println(查询所有书籍);int count 1/0;} catch (Exception e) {
// logger.info(e.getMessage()); // 记录普通信息程序运行过程
// logger.debug(e.getMessage()); // debug模式
// logger.warn(e.getMessage()); // 警告//logger.error(e.getStackTrace()); // 错误logger.error(e--e.getStackTrace()[0].getLineNumber()); // 错误类对应的行号}logger.info(查询所有书籍 end); return authorList;}}