log4j2的配置文件log4j2.xml

log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>
<!--monitorInterval:Log4j能够自动检测修改配置 文件和重新配置本身,设置间隔秒数-->
<configuration status="error" monitorInterval="60">
   <!--Properties:变量定义的地方,配置文件内可以通过${}取值-->
    <Properties>
        <!--日志输出级别-->
        <Property name="level">info</Property>
        <!-- 产生的压缩文件的后缀-->
        <Property name="fileName">$${date:yyyy-MM}/%d{MM-dd-yyyy}/%d{MM-dd-yyyy}-%i.log.gz</Property>
        <!-- 日志输出格式-->
        <Property name="pattern">%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level - %logger{36}.%M[%L] - %msg%xEx%n</Property>
        <!--每个日志文件的大小 kb M -->
        <Property name="fileSize">100 M</Property>
        <!--每天的日志文件最大数量-->
        <Property name="fileNumber">20</Property>
        <!--日志过期时间 s m h d-->
        <Property name="expirationTime">7d</Property>

    </Properties>
    
    <appenders>
        <!--这个输出控制台的配置-->
        <Console name="Console" target="SYSTEM_OUT">
            <!-- 控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch) -->
            <ThresholdFilter level="${level}" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout>
            <!--灵活切换日志输出格式 默认时pattern-->
                <MarkerPatternSelector defaultPattern="${pattern}">
                <!-- 当marker为spark时输出格式为 %m%n-->
                    <PatternMatch key="spark" pattern="%m%n"/>
                </MarkerPatternSelector>
            </PatternLayout>
        </Console>
        
        <!--操作日志 根据maker过滤  onMatch:匹配的执行 onMismatch:不匹配的执行  值有三种:NEUTRAL:匹配的由下一个filter处理 DENY:抛弃 ACCEPT:执行-->
        <RollingRandomAccessFile name="OperationLog" fileName="logs/OperationLog.log"
                                 filePattern="logs/operation-log/${fileName}">
            <PatternLayout pattern="${pattern}"/>
            <MarkerFilter marker="OPERATION_LOG" onMatch="ACCEPT" onMismatch="DENY"/>
            <ThresholdFilter level="${level}" onMatch="ACCEPT" onMismatch="DENY"/>=
           
            <!--interval属性用来指定多久滚动一次,默认是1 hour-->
            <TimeBasedTriggeringPolicy interval="1"/>
            <SizeBasedTriggeringPolicy size="${fileSize}"/>
            <!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件,这里设置了20 -->
            <DefaultRolloverStrategy max="${fileNumber}"/>

        </RollingRandomAccessFile>
        <!--会话日志   根据maker过滤-->
        <RollingRandomAccessFile name="ConversationLog" fileName="logs/ConversationLog.log"
                                 filePattern="logs/conversation-log/${fileName}">
            <PatternLayout pattern="${pattern}"/>
            <MarkerFilter marker="CONVERSATION_LOG" onMatch="ACCEPT" onMismatch="DENY"/>
            <ThresholdFilter level="${level}" onMatch="ACCEPT" onMismatch="DENY"/>
            <SizeBasedTriggeringPolicy size="${fileSize}"/>
            <DefaultRolloverStrategy max="${fileNumber}"/>
        </RollingRandomAccessFile>
        <!--业务日志   根据maker过滤-->
        <RollingRandomAccessFile name="BusinessLog" fileName="logs/BusinessLog.log"
                                 filePattern="logs/business-log/${fileName}">
            <PatternLayout pattern="${pattern}"/>
            <MarkerFilter marker="BUSINESS_LOG" onMatch="ACCEPT" onMismatch="DENY"/>
            <ThresholdFilter level="${level}" onMatch="ACCEPT" onMismatch="DENY"/>
            <SizeBasedTriggeringPolicy size="${fileSize}"/>
            <DefaultRolloverStrategy max="${fileNumber}"/>

        </RollingRandomAccessFile>

        <!--运行日志  记录所有的日志 配置日志过期删除-->
        <RollingRandomAccessFile name="RuntimeLog" fileName="logs/RuntimeLog.log"
                                 filePattern="logs/runtime-log/${fileName}">
            <PatternLayout pattern="${pattern}"/>
            <ThresholdFilter level="${level}" onMatch="ACCEPT" onMismatch="DENY"/>
            <SizeBasedTriggeringPolicy size="${fileSize}"/>
            <DefaultRolloverStrategy max="${fileNumber}">
            <!--maxDepth最大深度 日志文件的路径深度 -->
                <Delete basePath="logs/" maxDepth="4">
                    <IfFileName glob="**/**/**/*.log.gz"/>
                    <IfLastModified age="${expirationTime}"/>
                </Delete>
            </DefaultRolloverStrategy>
        </RollingRandomAccessFile>


    </appenders>
    <loggers>
        <!-- 过滤掉spring和mybatis的一些信息,输出到配置的一个或多个AppenderRef中-->
        <logger name="org.springframework" level="INFO" additivity="false">
            <AppenderRef ref="log"/>
        </logger>
        <root level="${level}">
            <appender-ref ref="Console"/>
            <appender-ref ref="RuntimeLog"/>
            <appender-ref ref="BusinessLog"/>
            <appender-ref ref="ConversationLog"/>
            <appender-ref ref="OperationLog"/>
        </root>

    </loggers>
</configuration>

faq:

  • 1.日志级别

    --> 高
    	trace:追踪,就是程序推进一下,可以写个trace输出
    	debug:调试,一般作为最低级别,trace基本不用。
    	info:输出重要的信息,使用较多
    	warn:警告,有些信息不是错误信息,但也要给程序员一些提示。
    	error:错误信息。用的也很多。
    	fatal:致命错误。
    
  • 2 输出源

    	CONSOLE(输出到控制台)
    	FILE(输出到文件)
    
  • 3 格式

    	SimpleLayout:以简单的形式显示
    	HTMLLayout:以HTML表格显示
    	PatternLayout:自定义形式显示
    
  • 4.PatternLayout自定义日志布局

    	%d{yyyy-MM-dd HH:mm:ss, SSS} : 日志生产时间,输出到毫秒的时间
    	%-5level : 输出日志级别,-5表示左对齐并且固定输出5个字符,如果不足在右边补0
    	%c : logger的名称(%logger)
    	%t : 输出当前线程名称
    	%p : 日志输出格式
    	%m : 日志内容,即 logger.info("message")
    	%n : 换行符
    	%C : Java类名(%F)
    	%L : 行号
    	%M : 方法名
    	%l : 输出语句所在的行数, 包括类名、方法名、文件名、行数
    	hostName : 本地机器名
    	hostAddress : 本地ip地址
    
  • 5 marker的使用

    	Marker BUSINESS_LOG = MarkerFactory.getMarker("BUSINESS_LOG");
    	log.info(BUSINESS_LOG ,"使用marker来标识日志类型")
    
  • 6log的使用

第一种通过lombok插件
使用注解@Slf4j
然后就可以在类中使用log
例:
	@Slf4j
	public class LogExampleOther {
  
 		 public static void main(String... args) {
    		log.error("Something else is wrong here");
  		}
	}
第二种 使用原生的log
例:
	public class LogExampleOther {
 	 	private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(LogExampleOther.class);
  
  		public static void main(String... args) {
    		log.error("Something else is wrong here");
  		}
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值