这期内容当中小编将会给大家带来有关log4j2.xml中如何配置 logback ,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
<?xml version="1.0" encoding="UTF-8"?> <Configuration status="off"> <Properties> <Property name="LOG_HOME">E:/logs</Property> <Property name="LOG_NAME">shou</Property> <Property name="LOG_PATTERN">%d|1771|shou||%p||%c|%m|%t||||%ex%n</Property> </Properties> <Appenders> <!--commented by ysma RFC5424是日志输出格式,通常会涉及日志服务器中template的配置 <Syslog name="LBSYSLOG" format="RFC5424" host="10.40.16.62" port="515" protocol="TCP" appName="shou1771" messageId="shou" facility="LOCAL2" newLine="true" mdcId="mdc" includeMDC="true" newLineEscape="#NewLine#" exceptionPattern="%ex" immediateFlush="false" connectTimeoutMillis="3000" reconnectionDelayMillis="3000"> <LoggerFields> <KeyValuePair key="syslogk1" value="%l"/> <KeyValuePair key="syslogk2" value="%X{syslogk2}"/> <KeyValuePair key="syslogk3" value="%X{syslogk3}"/> <KeyValuePair key="syslogk4" value="%X{syslogk4}"/> <KeyValuePair key="syslogk5" value="%X{syslogk5}"/> </LoggerFields> </Syslog>--> <!--打印日志到控制台--> <Console name="Console" target="SYSTEM_OUT"> <PatternLayout pattern="${LOG_PATTERN}"/> </Console> <!-- DEBUG日志格式 RollingFile 滚动日志的配置 filePattern需要%i 的关键字和 yyyy-MM-dd的格式 这样 DefaultRolloverStrategy 才能有效按天删除过期日志文件--> <RollingFile name="shou_debug_appender" fileName="${LOG_HOME}/${LOG_NAME}-debug.log" filePattern="${LOG_HOME}/${LOG_NAME}-debug.log.%d{yyyy-MM-dd}-%i.gz" append="true" immediateFlush="true"> <Filters> <!-- 控制输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch) --> <ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="DENY"/> </Filters> <PatternLayout> <pattern>${LOG_PATTERN}</pattern> </PatternLayout> <Policies> <!--interval,表示多久滚动一次。默认是1 hour。modulate=true用来调整时间:比如现在是早上3am,interval是4,那么第一次滚动是在4am,接着是8am,12am...而不是7am 是基于时间的滚动 rollover--> <TimeBasedTriggeringPolicy interval="1" modulate="true"/> <!--日志文件最大的大小 是基于大小的滚动 即超过500m就滚动一次日志--> <SizeBasedTriggeringPolicy size="500 MB"/> </Policies> <DefaultRolloverStrategy max="7"/> </RollingFile> <!-- INFO日志格式 --> <RollingFile name="shou_info_appender" fileName="${LOG_HOME}/${LOG_NAME}-info.log" filePattern="${LOG_HOME}/${LOG_NAME}-info.log.%d{yyyy-MM-dd}-%i.gz" append="true" immediateFlush="true"> <Filters> <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/> </Filters> <PatternLayout> <pattern>${LOG_PATTERN}</pattern> </PatternLayout> <Policies> <TimeBasedTriggeringPolicy interval="1" modulate="true"/> <SizeBasedTriggeringPolicy size="500 MB"/> </Policies> <!--保留7天的日志 默认也是保留7天--> <DefaultRolloverStrategy max="7"/> </RollingFile> <!-- ERROR日志格式 --> <RollingFile name="shou_error_appender" fileName="${LOG_HOME}/${LOG_NAME}-error.log" filePattern="${LOG_HOME}/${LOG_NAME}-error.log.%d{yyyy-MM-dd}-%i.gz" append="true" immediateFlush="true"> <Filters> <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/> </Filters> <PatternLayout> <pattern>${LOG_PATTERN}</pattern> </PatternLayout> <Policies> <TimeBasedTriggeringPolicy interval="1" modulate="true"/> <SizeBasedTriggeringPolicy size="500 MB"/> </Policies> <DefaultRolloverStrategy max="7"/> </RollingFile> </Appenders> <Loggers> <!-- 配置日志的根节点 Logger中没有明确指定输出路径的都会进入到root中依据level进行输出--> <Root level="INFO"> <AppenderRef ref="shou_info_appender"/> <AppenderRef ref="shou_error_appender" /> </Root> <!-- 第三方日志系统 additivity=false标识不走root模式输出日志, AppenderRef 指定了输出路径--> <Logger name="com.esup" level="DEBUG" additivity="false"> <AppenderRef ref="shou_debug_appender"/> <AppenderRef ref="shou_info_appender"/> <AppenderRef ref="shou_error_appender"/> </Logger> <Logger name="com.shou" level="DEBUG" additivity="false"> <AppenderRef ref="shou_debug_appender"/> <AppenderRef ref="shou_info_appender"/> <AppenderRef ref="shou_error_appender"/> </Logger> </Loggers> </Configuration>
logback配置样例
<?xml version="1.0" encoding="UTF-8"?> <!-- scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。 scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒当scan为true时,此属性生效。默认的时间间隔为1分钟。 debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 --> <configuration scan="false" scanPeriod="60 seconds" debug="false"> <!-- 定义日志的根目录 --> <property name="LOG_HOME" value="/home/lbyw/logs" /> <!-- 定义日志文件名称(项目应用名称) --> <property name="appName" value="butt-service"/> <!-- 定义当前项目所属项目部门 --> <property name="projectDept" value="1771"/> <!-- ch.qos.logback.core.ConsoleAppender 表示控制台输出 --> <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender"> <layout class="ch.qos.logback.classic.PatternLayout"> <!-- <pattern>%date [ %thread ] - [ %-5level ] [ %logger{50} : %line ] - %m%n</pattern> --> <pattern>%date|${projectDept}|${appName}|%X{logType}|%level|%X{traceId}|%logger|%message|%thread|%X{col2}|%X{col3}|%X{col4}|%exception%n</pattern> </layout> </appender> <!-- 滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件 --> <appender name="appLogAppender" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 指定日志文件的名称 --> <file>${LOG_HOME}/${appName}.log</file> <!-- 当发生滚动时,决定 RollingFileAppender 的行为,涉及文件移动和重命名 TimeBasedRollingPolicy: 最常用的滚动策略,它根据时间来制定滚动策略,既负责滚动也负责出发滚动。 --> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- 滚动时产生的文件的存放位置及文件名称 %d{yyyy-MM-dd}:按天进行日志滚动 %i:当文件大小超过maxFileSize时,按照i进行文件滚动 --> <fileNamePattern>${LOG_HOME}/${appName}-%d{yyyy-MM-dd}-%i.log</fileNamePattern> <!-- 可选节点,控制保留的归档文件的最大数量,超出数量就删除旧文件。假设设置每天滚动, 且maxHistory是365,则只保存最近365天的文件,删除之前的旧文件。注意,删除旧文件是, 那些为了归档而创建的目录也会被删除。 --> <MaxHistory>365</MaxHistory> <!-- 当日志文件超过maxFileSize指定的大小是,根据上面提到的%i进行日志文件滚动 注意此处配置SizeBasedTriggeringPolicy是无法实现按文件大小进行滚动的,必须配置timeBasedFileNamingAndTriggeringPolicy --> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>100MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> <!-- 日志输出格式: timestamp|project|app|logtype|level|traceid|logger|msg|col1|col2|col3|col4|exception 说明: timestamp: 统一格式yyyy-MM-dd HH:mm:ss.SSS,如2018-08-20 00:00:01,095 project: 项目:1771/7881/uhaozu app: 具体应用:www/order/intf logtype: 日志种类,自定义名称,和col配合记录自定义信息 traceid: 唯一线程号,invokeNO msg: log4j或logback输出的正文 exception: JavaStack col1-col4:预留的4个字段,col1-col2是字符串,col3-col4是数字,内容自定义; 特别说明: logtype和col字段结合,可满足日志自定义的场景,前提是自己记住col的含义,如: 记录用户操作的耗时: logtype="useractiontime",col1=userid,col2="login",col3=0.5 记录某个重要方法的耗时:logtype="methodtime", col1=方法名称, col3=0.8 日志文件地址/home/lbyw/logs下 --> <layout class="ch.qos.logback.classic.PatternLayout"> <pattern>%date|${projectDept}|${appName}|%X{logType}|%level|%X{traceId}|%logger|%message|%thread|%X{col2}|%X{col3}|%X{col4}|%exception%n</pattern> </layout> </appender> <!-- logger主要用于存放日志对象,也可以定义日志类型、级别 name:表示匹配的logger类型前缀,也就是包的前半部分 level:要记录的日志级别,包括 TRACE < DEBUG < INFO < WARN < ERROR additivity:作用在于children-logger是否使用 rootLogger配置的appender进行输出, false:表示只用当前logger的appender-ref,true: 表示当前logger的appender-ref和rootLogger的appender-ref都有效 --> <!-- SpringBoot的高级Profile功能 --> <springProfile name="dev"> <!-- Butt service logger --> <logger name="com.liebao.butt" level="debug" additivity="false"> <appender-ref ref="stdout" /> </logger> <!-- SQL logger --> <logger name="tk.mybatis.mapper.common.base" level="debug" additivity="false"> <appender-ref ref="stdout" /> </logger> <!-- Spring framework web logger --> <logger name="org.springframework.web.servlet.DispatcherServlet" level="debug" additivity="false"> <appender-ref ref="stdout" /> </logger> </springProfile> <!-- root与logger是父子关系,没有特别定义则默认为root,任何一个类只会和一个logger对应, 要么是定义的logger,要么是root,判断的关键在于找到这个logger,然后判断这个logger的appender和level。 --> <root level="info"> <appender-ref ref="stdout" /> <appender-ref ref="appLogAppender" /> </root> </configuration>
上述就是小编为大家分享的log4j2.xml中如何配置 logback 了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。