log4j2配置

本文详细介绍了Log4j2的配置,包括控制台和文件日志的设置,以及按照日期和大小进行日志滚动的策略。示例中展示了如何配置日志输出格式,如日期、级别、类名等,并提供了多个具体的配置案例,如基本的日志输出、按模块拆分日志等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

log4j2配置

日志输出格式:

%-5level 级别
%d{yyy-MM-dd HH:mm:ss.SSS} 日期
%c 当前类全名
%M 当前执行方法
%L 行号
%t 线程名
%m 信息
%n 换行

在这里插入图片描述

log4j2.xml范例1

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
	<properties>
		<property name="logDir">D:/0000/logs</property>
	</properties>
	<Appenders>

		<!-- 控制台 -->
		<Console name="consoleAppender" target="SYSTEM_ERR">
			<!--pattern:日期,线程名,日志级别,日志名称,日志信息,换行 -->
			<PatternLayout
				pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%t] %c.%M[%L] - %m%n" />
		</Console>

		<!-- 文件 -->
		<File name="fileAppender" fileName="${logDir}//log4j2.log">
			<PatternLayout
				pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%t] %c.%M[%L] - %m%n" />
		</File>

		<!-- 按照格式拆分日志 -->
		<RollingFile name="rollingFile"
			fileName="${logDir}/rollog.log"
			filePattern="${logDir}/rollog_-%d{yyyyMMdd}-%i">

			<PatternLayout
				pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%t] %c.%M[%L] - %m%n" />

			<Policies>
				<!-- 启动时,处罚拆分规则,产生一个日志文件 -->
				<OnStartupTriggeringPolicy />

				<!-- 按照大小拆分 -->

				<SizeBasedTriggeringPolicy size="10kb" />

				<!-- 按照时间节点拆分,拆分规则filePattern -->
				<TimeBasedTriggeringPolicy />
			</Policies>

			<!-- 同一目录下,文件最大数量,超过则覆盖 -->
			<DefaultRooloverStrategy max="3" />
		</RollingFile>
	</Appenders>


	<Loggers>
		<Root level="trace">
			<AppenderRef ref="consoleAppender" />
			<!-- <AppenderRef ref="fileAppender" /> -->

			<AppenderRef ref="rollingFile" />
		</Root>
	</Loggers>
</Configuration>

log4j2.xml范例2

<?xml version="1.0" encoding="UTF-8"?>
<configuration status="warn">
    <Properties>
        <!-- 配置日志文件输出目录,此配置将日志输出到tomcat根目录下的指定文件夹-->
        <Property name="LOG_HOME">logs</Property>
        <!-- 日志输出格式 -->
        <Property name="LOG_PATTERNLAYOUT">[SysLog] [%p] [%d{yyyy-MM-dd HH:mm:ss}] [%l] : %m%n</Property>
    </Properties>

    <Appenders>
        <!-- 控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch),当前只输出TRACE,DEBUG,INFO 三种 -->
        <!-- 输出日志的格式 -->
        <Console name="console_out_appender" target="SYSTEM_OUT">
            <ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout pattern="${LOG_PATTERNLAYOUT}"/>
        </Console>

        <!-- INFO级别日志 -->
        <RollingRandomAccessFile name="info_appender" immediateFlush="true" fileName="${LOG_HOME}/sys.log"
                                 filePattern="${LOG_HOME}/sys.log.%d{yyyy-MM-dd}">
            <PatternLayout pattern="${LOG_PATTERNLAYOUT}"/>
            <Policies>
<!--                <SizeBasedTriggeringPolicy size="2MB"/>-->
                <!-- 如果启用此配置,则日志会按文件名生成新压缩文件, 即如果filePattern配置的日期格式为 %d{yyyy-MM-dd HH}
                    ,则每小时生成一个压缩文件, 如果filePattern配置的日期格式为 %d{yyyy-MM-dd} ,则天生成一个压缩文件 -->
                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
            </Policies>
            <DefaultRolloverStrategy>
                <Delete basePath="${LOG_HOME}" maxDepth="1">
                    <IfFileName glob="*.log.*"/>
                    <IfLastModified age="3d"/>
                    <!--!Note: 这里的age必须和filePattern协调,
                    后者是精确到HH, 这里就要写成xH, xd就不起作用,精确到mm 下面就要成分单位 4320是3天的 ,
                    时间需要保证文件不被占用否则可能造成删除的时候, 最近的文件还处于被占用状态,导致删除不成功!-->
                </Delete>
            </DefaultRolloverStrategy>

        </RollingRandomAccessFile>

    </Appenders>

    <Loggers>
        <!-- 配置日志的根节点 -->
        <root level="INFO">
            <appender-ref ref="console_out_appender"/>
            <appender-ref ref="info_appender"/>
        </root>

        <!-- 第三方日志系统,为指定包下的class指定不同的日志级别 -->
        <!--        <logger name="org.springframework.core" level="warn"/>-->
        <!--        <logger name="org.springframework.beans" level="warn"/>-->
        <!--        <logger name="org.springframework.context" level="warn"/>-->
        <!--        <logger name="org.springframework.web" level="warn"/>-->
        <!--        <logger name="org.jboss.netty" level="warn"/>-->
        <!--        <logger name="org.apache.http" level="warn"/>-->

    </Loggers>

</configuration>

范例3-按模块拆分日志文件

<?xml version="1.0" encoding="UTF-8"?>
<configuration status="warn">
	<Properties>
		<!-- 配置日志文件输出目录,此配置将日志输出到tomcat根目录下的指定文件夹 -->
		<Property name="LOG_HOME">logs</Property>
		<!-- 日志输出格式 -->
		<Property name="LOG_PATTERNLAYOUT">%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%t] %c.%M[%L] - %m%n</Property>
		<Property name="LOG_SEND_MESSAGE">%d{yyyy-MM-dd HH:mm:ss.SSS} %m%n</Property>
	</Properties>

	<Appenders>
		<!-- 控制台日志 -->
		<Console name="console" target="SYSTEM_OUT">
			<PatternLayout pattern="${LOG_PATTERNLAYOUT}" />
		</Console>

		<!-- INFO级别日志 -->
		<RollingRandomAccessFile name="info_appender" immediateFlush="true" fileName="${LOG_HOME}/mq.log" filePattern="${LOG_HOME}/mq.log.%d{yyyy-MM-dd}">
			<PatternLayout pattern="${LOG_PATTERNLAYOUT}" />
			<Policies>
				<TimeBasedTriggeringPolicy interval="1" modulate="true" />
			</Policies>
		</RollingRandomAccessFile>
		
		<RollingRandomAccessFile name="send_message" immediateFlush="true" fileName="${LOG_HOME}/sendMsg.log" filePattern="${LOG_HOME}/sendMsg.log.%d{yyyy-MM-dd}">
			<PatternLayout pattern="${LOG_SEND_MESSAGE}" />
			<Policies>
				<TimeBasedTriggeringPolicy interval="1" modulate="true" />
			</Policies>
		</RollingRandomAccessFile>
	</Appenders>

	<Loggers>
		<logger name="com.webber.cm.mq.handler.mqmsg" level="INFO" additivity="false">
			<appender-ref ref="console" />
	    	<appender-ref ref="send_message"/>
	    </logger>
		<!-- 配置日志的根节点 -->
		<root level="INFO">
			<appender-ref ref="console" />
			<appender-ref ref="info_appender" />
		</root>
	</Loggers>
</configuration>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老李笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值