logback日志配置

来源:互联网 发布:淘宝如何不显示会员名 编辑:程序博客网 时间:2024/05/17 20:22

先把日志配置文件logback.xml贴出来:

<?xml version="1.0" encoding="UTF-8"?><configuration>    <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径 -->    <substitutionProperty name="LOG_HOME" value="/app/ntytest/logs/" />    <property name="log.root.level" value="DEBUG" /> <!-- 日志级别 -->    <property name="log.other.level" value="INFO" /> <!-- 其他日志级别 -->    <property name="log.base" value="logs" /> <!-- 日志路径 -->     <!-- 模块名称, 影响日志配置名,日志文件名 -->    <property name="log.moduleName" value="ntytest" />     <property name="log.max.size" value="100MB" /> <!-- 日志文件大小 -->    <contextName>ntytest</contextName>    <jmxConfigurator />    <!-- 配置控制台输出 -->    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">        <layout class="ch.qos.logback.classic.PatternLayout">            <pattern><![CDATA[%date{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] [%X{lsf.requestNo}|%X{lsf.consumerIp}] %logger{56}.%method\(\):%L - %msg%n]]></pattern>        </layout>    </appender>    <!-- 按照每天生成日志文件,当日志文件大小超过1024M,则新建一个 -->    <appender name="FILE"        class="ch.qos.logback.core.rolling.RollingFileAppender">        <encoding>UTF-8</encoding>        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">            <!--日志文件输出的文件名 -->            <FileNamePattern>${LOG_HOME}/NTY-CORE-SERVER-%d{yyyy-MM-dd}-%i.log            </FileNamePattern>            <!--日志文件保留天数 -->            <MaxHistory>30</MaxHistory>            <TimeBasedFileNamingAndTriggeringPolicy                class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">                <MaxFileSize>1024MB</MaxFileSize>            </TimeBasedFileNamingAndTriggeringPolicy>        </rollingPolicy>        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">    <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:    级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} |%-5level |NTY|NA|%thread|                %logger{50} -                %msg%n</pattern>        </encoder>    </appender>    <!-- 配置错误日志,filter设置日志级别为ERROR -->    <appender name="ERROR-FILE"        class="ch.qos.logback.core.rolling.RollingFileAppender">        <encoding>UTF-8</encoding>        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">            <!--日志文件输出的文件名 -->            <FileNamePattern>${LOG_HOME}/NTY-CORE-ERROR-%d{yyyy-MM-dd}-%i.log            </FileNamePattern>            <!--日志文件保留天数 -->            <MaxHistory>30</MaxHistory>            <TimeBasedFileNamingAndTriggeringPolicy                class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">                <MaxFileSize>1024MB</MaxFileSize>            </TimeBasedFileNamingAndTriggeringPolicy>        </rollingPolicy>        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:            级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} |%-5level |NTY|NA|%thread|                %logger{50} -                %msg%n</pattern>        </encoder>        <filter class="ch.qos.logback.classic.filter.LevelFilter">            <level>ERROR</level>            <onMatch>ACCEPT</onMatch>            <onMismatch>DENY</onMismatch>        </filter>    </appender>    <!-- 配置monitor日志,主要用于公司发送告警邮件,设置logger即可,    调用:Logger logger = LoggerFactory.getLogger("MONITOR");         就能把日志打印到monitor文件中。     -->    <appender name="MONITOR-FILE"        class="ch.qos.logback.core.rolling.RollingFileAppender">        <encoding>UTF-8</encoding>        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">            <!--日志文件输出的文件名 -->            <FileNamePattern>${LOG_HOME}/NTY-CORE-MONITOR-%d{yyyy-MM-dd}-%i.log            </FileNamePattern>            <!--日志文件保留天数 -->            <MaxHistory>30</MaxHistory>            <TimeBasedFileNamingAndTriggeringPolicy                class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">                <MaxFileSize>1024MB</MaxFileSize>            </TimeBasedFileNamingAndTriggeringPolicy>        </rollingPolicy>        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:            级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} |%-5level |NTY|NA|%thread|                %logger{50}|NA|                %msg%n</pattern>        </encoder>        <filter class="ch.qos.logback.classic.filter.LevelFilter">            <level>INFO</level>            <onMatch>ACCEPT</onMatch>            <onMismatch>DENY</onMismatch>        </filter>    </appender>    <!-- 配置monitor日志输出 -->    <logger name="MONITOR">        <appender-ref ref="MONITOR-FILE" />    </logger>    <!-- root也是一个<logger>元素,只是这个是根,默认日志输出到此appender-ref文件中 -->    <root level="${log.level}">        <appender-ref ref="STDOUT" />        <appender-ref ref="FILE" />        <appender-ref ref="ERROR-FILE" />    </root></configuration>

上述log代码配置了三种日志文件,分别是普通日志FILE,错误日志ERROR-FILE和告警日志MONITOR。采用RollingFileAppender滚动记录文件,先把日志记录到指定文件,当满足条件时,记录到其他文件。

java代码中调用为:

private final static Logger logger = LoggerFactory            .getLogger(EmailSendServcieImpl.class);private final static Logger monitor = LoggerFactory            .getLogger("MONITOR");monitor.warn("无模板单邮件发送|failure|" + (endTime - startTime) + " ms|非法Email地址!serialNoI=" + serialNoI);logger.warn(NTYErrorCode.NTY_ERROR_EMAIL_ADDR.getCode() + "非法Email地址:" + email1);

输出目录结构为:
这里写图片描述

0 0
原创粉丝点击