日志
日志记录了程序运行的时间、使用者、操作、运行情况等等。它可以帮助我们更好的调试程序,完成我们的代码调试。
log4j
由apache公司开源的一个开源项目。它可以控制日志的输入地点、输出级别、输出信息、输出格式等等……
更加方便的是只需要更改一个配置文件log4j.properties(名字不能改) maven工程放入src/main/resources中。同时引入log4j .jar包。
日志级别常用有5种(第五种一般也不常用):debug、info、warn、error、fatal
DEBUG :要用于开发过程中打印一些运行信息。
INFO :突出强调应用程序的运行过程。打印一些你感兴趣的或者重要的信息,这个可以用于生产环境中输出程序运行的一些重要信息,但是不能滥用,避免打印过多的日志。
WARN :表明会出现潜在错误的情形,有些信息不是错误信息,但是也要给程序员的一些提示。
ERROR: 指出虽然发生错误事件,但仍然不影响系统的继续运行。打印错误和异常信息,如果不想输出太多的日志,可以使用这个级别。
FATAL :指出每个严重的错误事件将会导致应用程序的退出。这个级别比较高了。重大错误,这种级别你可以直接停止程序了。
//全局配置log4j.rootCategory=日志级别,日志一,日志二...
设置一般最高到error
log4j.rootCategory=DEBUG, file, stdout
/*
log4j.appender.appenderName = 属性值
org.apache.log4j.ConsoleAppender(控制台)
org.apache.log4j.FileAppender(文件)
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
*/
例:
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
如果日志以文本格式输出还需进行例如以下格式配置:
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
输出位置:默认tomcat target目录下,也可采用绝对路径输出至电脑任意位置
log4j.appender.file.File=target/test.log
日志最大尺寸
log4j.appender.file.MaxFileSize=5120KB
日志最大数量
log4j.appender.file.MaxBackupIndex=10
日志打印格式
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d-[TS] %p %t %c - %m%n
/*
日志打印格式:
log4j.appender.appenderName.layout = 属性值
org.apache.log4j.HTMLLayout(以HTML表格形式布局),
org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
*/
如果为PatternLayout,则需要进行格式定义
例:
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d-[TS] %p %t %c - %m%n
以下为一些设置内容:
%p: 输出日志信息优先级,即DEBUG,INFO,WARN,ERROR,FATAL
%d: 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921
%r: 输出自应用启动到输出该log信息耗费的毫秒数
%c: 输出日志信息所属的类目,通常就是所在类的全名
%t: 输出产生该日志事件的线程名
%l: 输出日志事件的发生位置,相当于%C.%M(%F:%L)的组合,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10)
%x: 输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中
%%: 输出一个"%"字符
%F: 输出日志消息产生时所在的文件名称
%L: 输出代码中的行号
%m: 输出代码中指定的消息,产生的日志具体信息
%n: 输出一个回车换行符,Windows平台为"\r\n",Unix平台为"\n"输出日志信息换行
以上为配置文件讲解
以下为Java代码中具体使用方法:
private Log log = LogFactory.getLog(BaseServlet.class);
protected void doPost(HttpServletRequest request, HttpServletResponse response) {
log.debug("======>doPost调用");
try {
request.setCharacterEncoding("UTF-8");
log.info("====>编码格式更改");
} catch (UnsupportedEncodingException e1) {
log.error("编码格式更改出现错误", e1);
e1.printStackTrace();
}
}