文档章节

java 日志

miaojiangmin
 miaojiangmin
发布于 2017/05/18 14:02
字数 674
阅读 14
收藏 0

log4j2 log4j2的性能高于log4j和logback,我在项目中使用的是log4j2.

log4j2与slf4j集成

<dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
                <version>1.7.21</version>
            </dependency>
            <dependency>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-api</artifactId>
                <version>2.6.2</version>
            </dependency>
            <dependency>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-core</artifactId>
                <version>2.6.2</version>
            </dependency>
            <!-- log4j-slf4j-impl(用于log4j2与slf4j集成) -->
            <dependency>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-slf4j-impl</artifactId>
                <version>2.6.2</version>
            </dependency>

获取Loger对象方式

// log4j2方式
private static final org.apache.logging.log4j.Logger LOG = org.apache.logging.log4j.LogManager.getLogger(Logstrap.class);

// slf4j方式
private static final org.slf4j.Logger LOG = org.slf4j.LoggerFactory.getLogger(LoggerFactory.class);

配置文件的配置格式

<?xml version="1.0" encoding="UTF-8"?>
<configuration status="off">
    <properties>
        <property name="logdir">${sys:catalina.base}/logs</property>
        <!-- 日志切割的最小单位 -->
        <property name="EVERY_FILE_SIZE">100M</property>
    </properties>
    <appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY" />
            <PatternLayout pattern="%date{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %level [%file] - %msg%n" />
        </Console>
        <RollingFile name="RollingFile"
                     fileName="${logdir}/shiro.log"
                     filePattern="${logdir}/shiro.%d{yyyy-MM-dd}-%i.log">
            <PatternLayout pattern="%date{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %level [%C{36}.%M] - %msg%n" />
            <Filters>
                <ThresholdFilter level="error" onMatch="DENY" onMismatch="NEUTRAL" />
                <ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY" />
            </Filters>
            <Policies>
                <!-- 每24小时更新一次 -->
                <TimeBasedTriggeringPolicy modulate="true" interval="24"/>
                <!-- 此处为每个文件大小策略限制,使用它一般会在文件中filePattern采用%i模式 -->
                <SizeBasedTriggeringPolicy size="128KB" />
            </Policies>
            <DefaultRolloverStrategy max="30"/>
            <!--如果不做配置,默认是7,这个7指的是上面i的最大值,超过了就会覆盖之前的-->
            <!-- 最多备份30天以内的日志,此处为策略限制,Delete中可以按自己需要用正则表达式编写 -->
            <!-- DefaultRolloverStrategy字段中加入max=“30”经测试是配合SizeBasedTriggeringPolicy限制%i的存在数量,并没有发现是网上流传的是最多保存多少个文件的限制,也或许是我写的有问题 -->
            <!--<SizeBasedTriggeringPolicy size="${EVERY_FILE_SIZE}" />-->
        </RollingFile>
        <!-- 只显示error级别的信息 -->
        <RollingFile name="RollingFileError"
                     fileName="${logdir}/error.log"
                     filePattern="${logdir}/error-%d{yyyy-MM-dd}-%i.log">
            <PatternLayout pattern="%d{yyyy.MM.dd HH:mm:ss.SSS} [%thread] %level [%C{36}.%M:%L] - %msg%xEx%n" />
            <Filters>
                <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY" />
            </Filters>
            <SizeBasedTriggeringPolicy size="${EVERY_FILE_SIZE}" />
        </RollingFile>
        <!-- 只显示error级别的信息 -->
        <RollingFile name="RollingFileInfo"
                     fileName="${logdir}/info.log"
                     filePattern="${logdir}/info-%d{yyyy-MM-dd}-%i.log">
            <PatternLayout pattern="%d{yyyy.MM.dd HH:mm:ss.SSS} [%thread] %level [%C{36}.%M:%L] - %msg%xEx%n" />
            <Filters>
                <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY" />
            </Filters>
            <Policies>
                <!-- 每24小时更新一次 -->
                <TimeBasedTriggeringPolicy modulate="true" interval="24"/>
                <!-- 此处为每个文件大小策略限制,使用它一般会在文件中filePattern采用%i模式 -->
                 <SizeBasedTriggeringPolicy size="128KB" />
            </Policies>
            <DefaultRolloverStrategy max="30"/>
            <!-- 最多备份30天以内的日志,此处为策略限制,Delete中可以按自己需要用正则表达式编写 -->
            <!-- DefaultRolloverStrategy字段中加入max=“30”经测试是配合SizeBasedTriggeringPolicy限制%i的存在数量,并没有发现是网上流传的是最多保存多少个文件的限制,也或许是我写的有问题 -->
            <!--<SizeBasedTriggeringPolicy size="${EVERY_FILE_SIZE}" />-->
        </RollingFile>
    </appenders>

    <loggers>
        <Logger name="com.mjm" level="info" />
        <logger name="net.rubyeye.xmemcached" level="ERROR"/>
        <logger name="com.google.code.yanf4j" level="ERROR"/>
        <Root level="INFO" additivity="false">
            <AppenderRef ref="Console" />
            <AppenderRef ref="RollingFile" />
            <AppenderRef ref="RollingFileError" />
            <AppenderRef ref="RollingFileInfo" />
        </Root>
    </loggers>
</configuration>

© 著作权归作者所有

上一篇: j2cache二级缓存
下一篇: Api 网关
miaojiangmin
粉丝 13
博文 451
码字总数 110103
作品 0
宁波
程序员
私信 提问

暂无文章

数据库

数据库架构 数据库架构可以分为存储文件系统和程序实例两大块,而程序实例根据不同的功能又可以分为如下小模块。 1550644570798 索引模块 常见的问题有: 为什么要使用索引 什么样的信息能成...

一只小青蛙
今天
5
0
PHP常用经典算法实现

<? //-------------------- // 基本数据结构算法 //-------------------- //二分查找(数组里查找某个元素) function bin_sch($array, $low, $high, $k){ if ( $low <= $high){ $mid = int......

半缘修道半缘君丶
昨天
5
0
GIL 已经被杀死了么?

本文原创并首发于公众号【Python猫】,未经授权,请勿转载。 原文地址:https://mp.weixin.qq.com/s/8KvQemz0SWq2hw-2aBPv2Q 花下猫语: Python 中最广为人诟病的一点,大概就是它的 GIL 了。...

豌豆花下猫
昨天
5
0
git commit message form

commit message一般包括3部分:Header、Body、Footer。 <type>(<scope>):<subject>blank line<body>blank line<footer> header是必需的,body、footer可以省略。 header中type、subject......

ninjaFrog
昨天
5
0
聊聊Elasticsearch的CircuitBreakerService

序 本文主要研究一下Elasticsearch的CircuitBreakerService CircuitBreakerService elasticsearch-7.0.1/server/src/main/java/org/elasticsearch/indices/breaker/CircuitBreakerService.ja......

go4it
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部