日志这个功能在线上的Web项目中是必要的,平常我在开发的时候可以在我们的控制台看到异常和输出的信息,但在线上的项目抛异常的时候我们不可能像我们平常开发那样打开控制器看是问题了,因为当项目发布到 tomcat 后,没有控制台(在命令行界面能看见.), 不容易观察一些输出结果,日志就解决了这个问题,它可以把异常输出到文件中,便于观察结果,让开发人员及时了解情况,解决问题;
下面就了解一下如何在项目中实现日志功能:
步骤:
- 导入 log4j-xxx.jar;
- 在 src 下新建 log4j.properties(路径和名称都不允许改变);
- 调用;
-
log4j.rootLogger=debug,appender1,appender2
log4j.appender.appender1=org.apache.log4j.ConsoleAppender
log4j.appender.appender1.layout=org.apache.log4j.PatternLayout
log4j.appender.appender1.layout.ConversionPattern=%m class\:%C %L\u884C%n
log4j.appender.appender2=org.apache.log4j.FileAppender
log4j.appender.appender2.File=d:/logger.log
log4j.appender.appender2.layout=org.apache.log4j.PatternLayout
log4j.appender.appender2.layout.ConversionPattern=
%C%d{yyyy-MM-dd HH:mm:ss.SSS} %m %L\u884C%n%n
log4j.rootLogger= debug,appender1,appender2
第一行:debug是输出级别,它的输出级别
fatal(致命错误) > error (错误) > warn (警告) > info(普通信息)>debug(调试信息);
只有等于或者大于设置的等级才可输出,如这里设置debug,所有都可以输出,如果设置error,只有error和fatal才可以输出;
appender1是控制器输出;
appender2是文件输出;
第二行:log4j.appender.appender1=org.apache.log4j.ConsoleAppender
指输出类型,指明是控制器输出还是输出到文件;
第三行:log4j.appender.appender1.layout=org.apache.log4j.PatternLayout
指明输出的类;
第四行:
log4j.appender.appender1.layout.ConversionPattern=%m class\:%C %L\u884C%n
表示输出格式;
pattern 中常用几个输出表达式;
1.%C 包名+类名
2.%d{YYYY-MM-ddHH:mm:ss} 时间
3.%L 行号
4.%m 信息
5.%n 换行
这里是可以给\u884C 是什么呢?这里是我写入的中文,它进行了转码,下面可以看到运行结果就可以明白了
后面的是把信息输出到文件:相同部分就不过多解释log4j.appender.appender2.File=d:/logger.log 指定输出文件的路径;
调用代码和控制器输出结果:
可以在图片中看到 class:和行 ,其实是log4j.properties设置格式:
%m class\:%C %L\u884C%n \u884C就是表示行的意思;
如果设置的等级是info,那debug是不会进行输出的:
因为info 输出等级比debug高;只输出了info和error等级的;
在文件中也是一样的,注意空格: