log4j2搭建并使用

作为一个实用主义者,我喜欢在理解基本原理后快速的搭建系统,当系统运行起的时候有那种愉悦和兴奋。最近在完善公司框架,从最基本的日志系统开始。
java日志系统比较流行的是log4j,slf4j和logback,本来打算用logback的,已经把相关下载下来,结果突然发现log4j2,也就是log4j的升级版本。bilibili,种种云log4j2的优点。
ok,着手搭建,我用的是maven进行的。
maven的基础pom配置

  • 定义版本号log4j2.version

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <springversion>3.2.3.RELEASE</springversion>
    <log4j2.version>2.0.2</log4j2.version>
</properties>
  • 配置log4j2

<!-- log4j2 -->
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-api</artifactId>
    <version>${log4j2.version}</version>
</dependency>
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>${log4j2.version}</version>
</dependency>

maven的公用pom中引进log4j2

<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-api</artifactId>
</dependency>
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
</dependency>

现在已经配置好了日志,那么我们即将使用日志系统进行日志记录。日志分为xx几类,不同类有各个优先级,这个不懂的自己恶补下哦。
要使用日志系统,就需要进行相关配置,这个不用我多说了叁。在log4j2中配置文件可以为.xml,.json或者.jsn,默认情况下,系统选择configuration文件的优先级如下:

  1. log4j-test.json或者log4j-test.jsn

  2. log4j2-test.xml

  3. log4j.json或者log4j.jsn

  4. log4j2.xml
    本文以log4j2.xml的方式进行配置。直接上代码:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
    <Appenders>
        <!-- 配置日志输出文件名字 追加读写 -->
        <RollingFile name="ERROR" fileName="logs/error.log"
            filePattern="log/$${date:yy-mm}/error-%d{mm-dd-yyyy}-%i.log.gz">
            <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
            <!-- 输出格式 -->
            <PatternLayout
                pattern="%d{yyyy-MM-dd 'at' HH:mm:ss z} %-5level %class{36} 'Line-' %L %M - %msg%xEx%n" />
            <SizeBasedTriggeringPolicy size="10MB" />
        </RollingFile>
        <RollingFile name="INFO" fileName="logs/info.log"
            filePattern="log/$${date:yy-mm}/info-%d{mm-dd-yyyy}-%i.log.gz">
            <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
            <!-- 输出格式 -->
            <PatternLayout
                pattern="%d{yyyy-MM-dd 'at' HH:mm:ss z} %-5level %class{36} 'Line-' %L %M - %msg%xEx%n" />
            <SizeBasedTriggeringPolicy size="50MB" />
        </RollingFile>
        <!-- 输出到控制台的配置 -->
        <Console name="STDOUT" target="SYSTEM_OUT">
            <!-- 输出格式 -->
            <PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n" />
        </Console>
    </Appenders>
    <Loggers>
        <!-- 记录器输出文件为info级别 -->
        <!-- <logger name="com.hdd" level="debug" additivity="false"> <AppenderRef 
            ref="STDOUT"/> </logger> 记录器输出文件为info级别 <logger name="com.hdd.test.App2" 
            level="info" additivity="false"> <AppenderRef ref="A1"/> </logger> -->
        <!-- 根 控制台输出级别 -->
        <Root level="debug">
            <AppenderRef ref="ERROR" />
            <AppenderRef ref="INFO" />
            <AppenderRef ref="STDOUT" />
        </Root>

    </Loggers>
</Configuration>

在以上配置文件我们配置错误输出、info级别输入以及控制台输出。注意

<ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>

这行代码对输出的等级进行了限制,这样过滤配置后只有错误信息会输出到相关文件。
关于配置的详细介绍,网上有太多文章,我就不再赘述。
配置完成后我们需要编写代码验证。写一个测试类App2 :

public class App2 {
    static Logger logger = LogManager.getLogger(App2.class);

    public static void main(String[] args) {
        for (int i = 0; i < 10; i++) {
            logger.trace("trace message " + i);
            logger.debug("debug message " + i);
            logger.info("info message " + i);
            logger.warn("warn message " + i);
            logger.error("error message " + i);
            logger.fatal("fatal message " + i);
            logger.fatal("占位符  {} ",i);
        }
        System.out.println("Hello World! 2");
    }
}

通过运行该类,观察类生成的文件,可以看到相关的结果。

以上介绍了从配置到实际使用log4j2运行的过程,那么我们再什么地方应该使用日志,日志规范有应该是怎样的?关于日志使用规范,我觉得下面文章说的比较好,大家可以参考:
http://blog.csdn.net/a6733417...


参考资料:

  1. http://blog.csdn.net/column/d...

  2. http://www.360doc.com/content...

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值