Lo4j简单配置

看到的一篇我觉得还行的写Log4j配置问题的博客:http://blog.youkuaiyun.com/u012706811/article/details/51448996,写的挺好的至少比那些长篇大论容易看多了!!!!

1.环境配置

直接导入JAR就可以了,这里使用maven导入

 <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.17</version>
    </dependency>
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

2.写配置文件

log4j可以使用xml配置,也可以使用properties文件配置,一半都使用后者,简单明了

1.输出到控制台

控制台一半都是我们调试查看的地方,所以开发阶段直接全部日志都输出到控制台

log4j.appender:固定名称,表示这是一个appender配置 
stdout:自定义命名,可以通过制定哪些地方使用这个配置

#指定输出是控制台
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
#指定输出样式为自定义样式
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
#自定义样式
log4j.appender.stdout.layout.ConversionPattern=%-5p - %m%n
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

启用这个输出

log4j.rootLogger 是全局配置文件,也可以说默认配置,这里配置的是输出DEBUG以上的信息,输出位置到stdout这个appender,也就是到控制台

#一半放在配置文件开头
log4j.rootLogger=DEBUG, stdout
 
  • 1
  • 2
  • 1
  • 2

测试这个配置

public class App 
{
    public static void main( String[] args )
    {
        //加载配置文件
        PropertyConfigurator.configure("src/log4j.properties");
        //获取loger记录器,参数一般指定当前类的class
        Logger logger = Logger.getLogger(App.class);
        logger.debug("这是debug");
        logger.info("这是info");
        logger.error("这是error");
        logger.fatal("这是fatal");
    }
}
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

这里写图片描述


2.输出到文件

输出到文件和控制台差不多,只是多了不少参数,这里使用I命名这个appender,追加到properties配置文件中

#表示当前输出位置是文件
log4j.appender.I=org.apache.log4j.FileAppender
#指定当前输出路径
log4j.appender.I.File=E:/test/log.log
#指定输出日志的最低级别
log4j.appender.I.Threshold=INFO
#指定输出样式
log4j.appender.I.layout=org.apache.log4j.PatternLayout
#指定输出编码
log4j.appender.I.encoding=UTF-8
#自定义输出样式
log4j.appender.I.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

启动这个配置 
在刚才的基础上,再加上I命名这样就可以启动这个配置了

log4j.rootLogger=DEBUG, stdout,I
 
  • 1
  • 1

测试这个配置 
测试代码同上,这个时候是同时输出到控制台和文件 
文件中过滤了DEBUG级别的了 
这里写图片描述 
控制台正常输出 
这里写图片描述


3.把error级别以上单独输出到一个文件

和之前一样,现在重新定义一个appender给error级别以上的用,命名为E

#log error级别的日志放在error.log
log4j.appender.E=org.apache.log4j.FileAppender
log4j.appender.E.File=E:/test/error.log
log4j.appender.E.Threshold=ERROR
log4j.appender.E.layout=org.apache.log4j.PatternLayout
log4j.appender.E.encoding=UTF-8
log4j.appender.E.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

启动这个配置 
和之前一样,在最后增加上这个命名E即可

log4j.rootLogger=DEBUG, stdout,I,E
 
  • 1
  • 1

测试这个配置 
测试代码同上

成功把Error级别单独输出 
这里写图片描述

4.指定包文件输出

很多情况下使用框架,框架本身就带有日志,而且特别多,这个时候就需要单独指定项目源码部分,也就是自己写的日志输出到指定文件

在其他的基础上,修改下配置 
log4j.logger+包名:相当于局部配置,这里全局配置为DEBUG输出到控制台,但是com.test下面的INFO级别以上的日志输出到I命名和E命名中

log4j.rootLogger=DEBUG, stdout
log4j.logger.com.test=INFO, I,E
 
  • 1
  • 2
  • 1
  • 2

5.每天产生一个新日志文件

只是使用的appender不一样了,每天产生日志使用的是org.apache.log4j.DailyRollingFileAppender这个类来控制

#打印INFO级别及以上的日志
#每天生成1个日志文件
log4j.appender.PRODUCT=org.apache.log4j.DailyRollingFileAppender
log4j.appender.PRODUCT.Append=true
#配置使其产生是每天凌晨
#如果想每小时则  log4j.appender.PRODUCT.DatePattern='.' yyyy-MM-dd -HH
log4j.appender.PRODUCT.DatePattern='.' yyyy-MM-dd
log4j.appender.PRODUCT.File=irs.log
log4j.appender.PRODUCT.Threshold=INFO
log4j.appender.PRODUCT.Encoding=UTF-8
#log4j.appender.PRODUCT.MaxFileSize=20MB
log4j.appender.PRODUCT.layout=org.apache.log4j.PatternLayout
log4j.appender.PRODUCT.layout.ConversionPattern=<%d{yyyy-MM-dd HH\:mm\:ss\:SSS} [%p]>[Galaxy-IRS] %X{module}-%X{random}: %m%n
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

3.备注

1.在和spring配合使用

配合使用的时候,不需要显示的指定加载log4j.properties位置,默认放在src下,spring会自动加载这个配置的


2.输出到webApp目录下 
这个就需要和spring配合使用,或者不用spring的话就需要自己写一个servlet,再加载配置文件前执行这个servlet,下面给出spring下指定路径方法

在web.xml下配置,要放在加载spring之前才可以的哈

  <!-- ******************* 初始化 "webAppRootKey" **************** -->
  <context-param>
    <param-name>webAppRootKey</param-name>
    <param-value>app.root</param-value>
  </context-param>
  <!-- ******************************************************************  -->

  <!-- ***************** spring 设置 log4j 配置文件 ********************** -->
  <context-param>
    <param-name>log4jConfigLocation</param-name>
    <param-value>classpath:log4j.properties</param-value>
  </context-param>
  <listener>
    <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
  </listener>
  <!-- ******************************************************************* -->
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

然后在log4j.properties中使用

log4j.appender.file.File=${app.root}/WEB-INF/logs/log.html
 
  • 1
  • 1

这样就实现了,输出到WEB-INF下,前提logs这个文件夹必须存在哈

最后分享自己常用日志格式:

%d{HH:mm:ss} [%t] %c %p - %m%n


Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。 log4j的好处在于: 1) 纪录操作,能够详细的知道错误的原因 2) 通过修改配置文件,可以定义每一条日志信息的级别,从而控制是否输出。在系统开发阶段可以打印详细的log信息以跟踪系统运行情况,而在系统稳定后可以关闭log输出,从而在能跟踪系统运行情况的同时,又减少了垃圾代码(System.out.println(......)等)。 log4j是一个非常强大的log记录软件,下面我们就来看看在项目中如何使log4j。 首先当然是得到log4j的jar档,推荐使用1.2.X版,下载地址: http://logging.apache.org/log4j/1.2/download.html 1.得到记录器   使用Log4j,第一步就是获取日志记录器,这个记录器将负责控制日志信息。其语法为:   public static Logger getLogger( String name) name : 这个那么就是你配置文件中对应的 log4j.logger. 后面的字符串   通过指定的名字获得记录器,如果必要的话,则为这个名字创建一个新的记录器。Name一般取本类的名字,比如:   static Logger logger = Logger.getLogger ( ServerWithLog4j.class.getName () )   2.读取配置文件   当获得了日志记录器之后,第二步将配置Log4j环境,其语法为:   BasicConfigurator.configure (): 自动快速地使用缺省Log4j环境。   PropertyConfigurator.configure ( String configFilename) :读取使用Java的特性文件编写的配置文件。   DOMConfigurator.configure ( String filename ) :读取XML形式的配置文件。   3.插入记录信息(格式化日志信息)   当上两个必要步骤执行完毕,您就可以轻松地使用不同优先级别的日志记录语句插入到您想记录日志的任何地方,其语法如下:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值