logback日志配置

先把日志配置文件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);

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值