如何把linux日志打印到文件格式,log4j日志输出到文件的配置

log4j日志输出到文件的配置

1.Maven的dependency

2.log4j.properties的配置

3.Junit的Test类

4.web.xml的配置(非必要)

5.spring的db.config的配置(非必要)

一.maven的dependency

org.apache.logging.log4j

log4j-core

2.3

org.slf4j

slf4j-log4j12

1.7.25

junit

junit

4.12

这些jar包都可以去maven中央仓库下载到,http://search.maven.org/。

二.log4j.properties的配置。

#所有日志

log4j.rootLogger = DEBUG,stdout,file

log4j.logger.org.apache.ibatis=warn

log4j.logger.Java.sql=warn

log4j.logger.org.springframework=warn

# Druid

log4j.logger.druid.sql=DEBUG

log4j.logger.druid.sql.DataSource=warn

log4j.logger.druid.sql.Connection=warn

log4j.logger.druid.sql.Statement=DEBUG

log4j.logger.druid.sql.ResultSet=warn

#设置包名的输出级别

log4j.logger.cn.wdq=DEBUG,wdq

#控制台输出

log4j.appender.stdout=org.apache.log4j.ConsoleAppender

log4j.appender.stdout.Target=System.out

log4j.appender.stdout.Threshold=DEBUG

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

log4j.appender.stdout.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss}[ %p ]%m%n

#所有文件输出

log4j.appender.file = org.apache.log4j.FileAppender

log4j.appender.file.File = ${webApp.root}/wdq_logs/allDEBUG.log

log4j.appender.file.Encoding=UTF-8

log4j.appender.file.name = fileLogDemo

log4j.appender.file.Threshold=DEBUG

log4j.appender.file.layout=org.apache.log4j.PatternLayout

log4j.appender.file.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss}[ %p ]%m%n

log4j.appender.file.append = true

#wdq下所有包的文件输出

log4j.appender.wdq = org.apache.log4j.FileAppender

log4j.appender.wdq.File = ${webApp.root}/wdq_logs/package_wdq.log

log4j.appender.wdq.Encoding=UTF-8

log4j.appender.wdq.name = fileLogDemo

log4j.appender.wdq.Threshold=DEBUG

log4j.appender.wdq.layout=org.apache.log4j.PatternLayout

log4j.appender.wdq.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss}[ %p ]%m%n

log4j.appender.wdq.append = true

log4j.properties是默认加载的文件名,如果要另外起名字,还需要在web.xml里面进行配置,如果是测试用的,最好用默认的名字,这跟Spring的Application.xml有点像。

log4j.rootLogger = DEBUG,stdout,file中的DEBUG是日志输出优先级,从高到低依次为error,warn,info,debug,低级别的可以输出高级别的日志,如debug可以输出任何优先级的

日志,但是info只能输出info,warn,error级别的日志。stdout,file这两个有点类似于变量名,可以自定义名称,可以用这两个东西进行控制台或者文件的输出。比如控制台的为

log4j.appender.stdout=org.apache.log4j.ConsoleAppender;保存为文件的为log4j.appender.file = org.apache.log4j.FileAppender。还有另外三种按天生成的,流形式生成的,

滚动形式的,这里就不介绍了(反正我也忘了...),具体可以去官方文档看一下appender的几种输出形式。值得一提的是1.文件编码(Encoding):这个要定义为UTF-8不然输出到文件里面有时候部分类

的编码不一致,有导致部分乱码。2.文件的名字和存储路径(File):如上,我写的是${webApp.root}/wdq_logs/package_wdq.log,这个其实是在web.xml里面定义好的。如果没有定义,那么

将会输出到你项目的磁盘根目录。文件名的格式有常用的.log和.html,推荐用.log,方便项目里面的所有人查看。3.(追加方式append):设置属性为true,如果是false的话就会覆盖掉原先的日志而不是

追加到后面。

三.Junit的测试类的输出

package cn.wdq.test;

import org.apache.log4j.Logger;

import org.junit.Test;

public class LoggerTest {

Logger logger= Logger.getLogger(LoggerTest.class);

@Test

public void printLogger(){

logger.error("直接输出吧");

try {

} catch (Exception e) {

e.printStackTrace();

}

}

}

控制台输出效果

903dc7430f477e705257f8c990df4aad.png

文件输出效果

a1613dd1141cc64eef86434ea1a836ad.png

四.web.xml的配置(非必要)

webAppRootKey

webApp.root

org.springframework.web.util.Log4jConfigListener

1.使用默认的名字(log4j.properties),就不用配置log4jConfigLocation(上面注释掉的部分)。不然就指定路径(log4j2.xml是我现在用不到的部分),我现在放的是在根目录,直接classpath:log4j2.xml。

classpath是指定路径的格式,此外还有classpath.*:log4j2.xml。他们两个的区别是classpath是默认加载第一个,加载到就结束。classpath.*还会搜索后面还有没有匹配项。

2.如果指定绝对路径就不用配置webAppRootKey,这个是把文件放到webapp下面的。value值可以自定义,但是name值只能是webAppRootKey。配置了之后就要配置listener监听,不然就忽略。

官方的说的默认加载顺序为1.* 2.*(前面这两个我忘了...与java相关的就后面的两个)3.log4j.properties和3.log4j.xml。现在网上有很多老旧的文章是1.X的版本的xml配置方法。

我这里要说的是2.X的。他们两者的区别如下

1.X

2.X

五、Spring的db.config的配置(非必要)

我是启用了mybatis和druid连接池,所以会加一句

filters: stat,log4j

这样可以监听到log4j日志。

0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值