log4j2.xml详细配置

<!-- status="OFF",可以去掉,它的含义为是否记录log4j2本身的event信息,默认是OFF -->
<configuration status="OFF" monitorInterval="60">
    <Properties>
        <!-- (*必须,各应用需要修改) 部署应用的名称,命名规则 :全部小写字母、中短横线、数字,与微服务命名,disconf中命名一致 -->
        <property name="APPNAME">user-info-rest</property>
        <!-- (各应用需要修改)部署应用的端口号,用于一台服务器部署多台应用的情况,如果不需要,保持默认 -->
        <property name="PORT">${sys:crtServerPort:-8080}</property>
        <!-- (各应用需要修改)日志文件本地存放目录路径 建议各个环境跟生产环境统一起来,方便维护 -->
        <property name="logBaseFolder">/app/user-info-rest/logs</property>


        <!-- 日志文件名称的前缀部分,以下为建议值 -->
        <property name="logFileNamePrefix">${APPNAME}</property>
        <!-- 日志文件最小切割单位 值不做强制要求,建议300MB -->
        <property name="every_file_size">300MB</property>
        <!-- *必须并强制遵守 日志文件的编码 -->
        <property name="log_charset">UTF-8</property>
        <!-- *必须并强制遵守 日志格式说明: |日志时间|线程id|端口号|应用名称|类名|方法名|日志级别|traceId |输入参数|输出参数|耗时|任意多个扩展字段|具体打印的msg内容然后换行 -->
        <property name="log_pattern">|%d{yyyy-MM-dd HH:mm:ss.SSS}|%t|${PORT}|${APPNAME}|%logger|%M|%p|%X{MDCCRT_GUID_TRACEID}|###+%X{MDCCRT_EXTENTS}-###|##+%X{MDCCRT_INPUT_PARAM}-##|##+%X{MDCCRT_OUTPUT_PARAM}-##|%X{MDCCRT_COST_TIME}|%m%n</property>
    </Properties>


    <appenders>
        <!-- 用来控制台输出 -->
        <Console name="console" target="SYSTEM_OUT">
            <PatternLayout pattern="${log_pattern}" />
        </Console>


        <!-- 以下是建议的日志压缩包目录的格式名称 -->
        <!-- all File Config -->
        <RollingRandomAccessFile name="all"
                                 filePattern="${logBaseFolder}/%d{yyyy-MM-dd}/${logFileNamePrefix}-all-%d{yyyyMMdd-HH}.%i.log.gz"
                                 fileName="${logBaseFolder}/${logFileNamePrefix}-all.log"
                                 immediateFlush="false">
            <!-- 日志输出格式 -->
            <PatternLayout charset="${log_charset}" pattern="${log_pattern}" />
            <!-- 以下是日志压缩包目录的建议格式名称 建议1天归档依次,压缩文件上线建议为200,这里预估每个磁盘存储空间200G左右,每个压缩包最大值200MB -->
            <Policies>
                <TimeBasedTriggeringPolicy modulate="true" interval="1" />
                <SizeBaseDTriggeringPolicy size="${every_file_size}" />
            </Policies>
            <DefaultRolloverStrategy max="1000" />
            <Filters>
                <!-- 显示所有信息 -->
                <ThresholdFilter onMismatch="DENY" onMatch="ACCEPT" level="TRACE" />
            </Filters>
        </RollingRandomAccessFile>


        <!-- error File Config -->
        <RollingRandomAccessFile name="errorLog"
                                 filePattern="${logBaseFolder}/%d{yyyy-MM-dd}/${logFileNamePrefix}-error-%d{yyyyMMdd-HH}.%i.log.gz"
                                 fileName="${logBaseFolder}/${logFileNamePrefix}-error.log"
                                 immediateFlush="false">
            <PatternLayout charset="${log_charset}" pattern="${log_pattern}" />
            <Policies>
                <TimeBasedTriggeringPolicy modulate="true" interval="1" />
                <SizeBaseDTriggeringPolicy size="${every_file_size}" />
            </Policies>
            <Filters>
                <!-- 只显示error信息 -->
                <ThresholdFilter onMismatch="DENY" onMatch="ACCEPT" level="ERROR" />
            </Filters>
        </RollingRandomAccessFile>
    </appenders>


    <loggers>
        <!-- 各应用按实际情况自行定义相关类的输出级别 -->
        <AsyncLogger name="com.luox.user" level="DEBUG" />


        <AsyncLogger name="com.apache" level="WARN" />
        <AsyncLogger name="org.apache.ibatis.jdbc" level="WARN" />


        <AsyncLogger name="org.apache.zookeeper.ClientCnxn" level="WARN" />
        <AsyncLogger name="org.apache.zookeeper.ZooKeeper" level="WARN" />
        <AsyncLogger name="org.apache.commons.httpclient.util.IdleConnectionHandler" level="WARN" />


        <AsyncLogger name="org.apache.http.client.protocol.RequestAddCookies" level="WARN" />


        <AsyncLogger name="org.apache.http.client.protocol.RequestAuthCache" level="WARN" />
        <AsyncLogger name="org.apache.http.impl.conn.PoolingHttpClientConnectionManager" level="WARN" />
        <AsyncLogger name="org.apache.http.impl.execchain.MainClientExec" level="WARN" />
        <AsyncLogger name="org.apache.http.headers" level="WARN" />
        <AsyncLogger name="org.apache.http.wire" level="WARN" />


        <AsyncLogger name="org.apache.activemq.transport.AbstractInactivityMonitor" level="WARN" />


        <AsyncLogger name="com.alibaba.dubbo.remoting.transport.DecodeHandler" level="WARN" />
        <AsyncLogger name="com.alibaba.dubbo.monitor.dubbo.DubboMonitor" level="OFF" />
        <AsyncLogger name="com.alibaba.dubbo.remoting.exchange.support.header.HeartbeatHandler" level="WARN" />
        <AsyncLogger name="com.alibaba.dubbo.remoting.exchange.support.header.HeartBeatTask" level="WARN" />
        <AsyncLogger name="com.alibaba.dubbo.registry.zookeeper.ZookeeperRegistry" level="WARN" />
        <AsyncLogger name="com.alibaba.dubbo.config.AbstractConfig" level="WARN" />


        <AsyncLogger name="com.baidu.disconf.client.config.inner.DisInnerConfigHelper" level="WARN" />
        <AsyncLogger name="com.baidu.disconf.client.config.ConfigMgr" level="WARN" />
        <AsyncLogger name="com.baidu.disconf.core.common.utils.ClassLoaderUtil" level="WARN" />
        <AsyncLogger name="com.baidu.disconf.core.common.utils.http.HttpClientUtil" level="WARN" />


        <AsyncLogger name="org.springframework" level="WARN" />
        <AsyncLogger name="RocketmqRemoting" level="WARN" />
        <AsyncLogger name="RocketmqClient" level="WARN" />
        <AsyncLogger name="org.apache.kafka" level="WARN" />


        <asyncRoot level="INFO">
            <!-- 各应用自行调整,日志输出至文件,自动按时间、按文件大小进行归档 ,生产环境调默认为INFO,如有特殊需求,在disconf动态调级 -->
            <appender-ref level="DEBUG" ref="all" />


            <!-- 日志输出至Console,仅在IDE开发时打开方便开发人员,部署到服务器之后必须置为OFF,level设置为OFF表示禁用Console控制台日志输出 -->
            <appender-ref level="TRACE" ref="console" />


            <!-- 异常日志,不用改动 -->
            <appender-ref level="ERROR" ref="errorLog" />
        </asyncRoot>
    </loggers>
</configuration>

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
log4j2是一个流行的Java日志框架,可以通过log4j2.xml文件进行配置。下面是log4j2.xml文件的配置详解: 1. 配置文件动态刷新配置 可以使用monitorInterval属性来设置配置文件的动态刷新间隔,单位为秒。例如: ```xml <Configuration monitorInterval="30"> ``` 2. Configuration的status属性 Configuration标签有一个status属性,用于指定日志记录器的状态。可以设置为debug、info、warn、error、fatal。例如: ```xml <Configuration status="warn"> ``` 3. 日志级别 可以使用属性level来指定日志级别,可以设置为trace、debug、info、warn、error、fatal、off。例如: ```xml <Logger name="com.foo.Bar" level="trace"> ``` 4. Logger与Root标签 Logger标签用于指定特定的类或包的日志级别,而Root标签用于指定所有日志记录器的默认日志级别。例如: ```xml <Root level="error"> <AppenderRef ref="Console"/> </Root> <Logger name="com.foo.Bar" level="trace"> <AppenderRef ref="RollingFile"/> </Logger> ``` 5. Logger的additivity属性 Logger标签还有一个additivity属性,用于指定是否将日志事件传递给父记录器。默认情况下,Logger的additivity属性为true。例如: ```xml <Logger name="com.foo.Bar" level="trace" additivity="false"> ``` 6. appender-ref的ref属性 可以使用appender-ref标签来引用appender。例如: ```xml <Logger name="com.foo.Bar" level="trace"> <AppenderRef ref="RollingFile"/> </Logger> ``` 7. appender 可以使用appender标签来指定日志输出的目的地,例如控制台或文件。常用的appender有Console、File、RollingFile等。例如: ```xml <Appenders> <Console name="Console" target="SYSTEM_OUT"> <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/> </Console> <RollingFile name="RollingFile" fileName="logs/app.log" filePattern="logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz"> <PatternLayout pattern="%d %p %c{1.} [%t] %m%n"/> <Policies> <TimeBasedTriggeringPolicy/> <SizeBasedTriggeringPolicy size="250 MB"/> </Policies> </RollingFile> </Appenders> ``` 8. Patterns 可以使用PatternLayout标签来指定日志输出的格式。例如: ```xml <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/> ``` 9. Java使用Log4j2 可以使用以下步骤在Java中使用Log4j2: 1)导入pom依赖 ```xml <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>2.14.1</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.14.1</version> </dependency> ``` 2)配置Log4j2.xml 3)使用日志 ```java import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; public class MyClass { private static final Logger logger = LogManager.getLogger(MyClass.class); public void doSomething() { logger.debug("Debug message"); logger.info("Info message"); logger.warn("Warn message"); logger.error("Error message"); logger.fatal("Fatal message"); } } ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值