Spring与LogBack整合

Spring与LogBack整合时,项目首先需要引入Spring容器管理。我们需要在web项目的web.xml中添加spring容器配置,下面是某项目的web.xml路径:

D:\workspace_idea\xxx_37-0-159-1_BRANCH\src\main\webapp\WEB-INF\web.xml


下面是在web.xml中关于spring容器的配置:

  <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:/spring/applicationContext.xml</param-value>
    </context-param>

    <context-param>
        <param-name>contextClass</param-name>
        <param-value>org.springframework.web.context.support.XmlWebApplicationContext</param-value>
    </context-param>

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

随后在web.xml中加入LogBack配置片段,将LogBack交给spring托管:

    <context-param>
        <param-name>logbackConfigLocation</param-name>
        <param-value>classpath:/log/logback.xml</param-value>
    </context-param>

    <listener>
        <listener-class>ch.qos.logback.ext.spring.web.LogbackConfigListener</listener-class>
    </listener>


接下来需要增加LogBack具体的配置,但是由于我们使用spring管理的,且LogBack中用到的跟环境相关的配置我们都是存放在properties文件中,因此在配置LogBack文件前,需要在applicationContext.xml中加入properties配置文件加载部分:

<context:property-placeholder location="classpath*:*.properties" ignore-unresolvable="true" />
<context:property-placeholder location="classpath:properties/*.properties" ignore-unresolvable="true" />


接下来是LogBack.xml文件的配置

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

    <property name="LOG_HOME" value="/home/work/logs"/>

    <!-- 控制台输出 -->
    <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%date [%thread] %-5level %logger{80} - %msg%n</pattern>
        </encoder>
    </appender>

    <!-- monitor模块 -->
    <appender name="serviceMonitor" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <append>true</append>
        <file>${LOG_HOME}/service/monitor.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_HOME}/service/monitor.%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %C{56} - %msg%n</pattern>
        </encoder>
    </appender>

    <appender name="daoMonitor" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <append>true</append>
        <file>${LOG_HOME}/dao/monitor.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_HOME}/dao/monitor.%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %C{56} - %msg%n</pattern>
        </encoder>
    </appender>

    <!-- OP准入 -->
    <appender name="opAccess" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <append>true</append>
        <file>${LOG_HOME}/op/op_access.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_HOME}/op/op_access.%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %C{56} - %msg%n</pattern>
        </encoder>
    </appender>

    <appender name="opError" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <append>true</append>
        <file>${LOG_HOME}/op/op_error.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_HOME}/op/op_error.%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %C{56} - %msg%n</pattern>
        </encoder>
    </appender>
    
    <!-- 分店操作 -->
    <appender name="firmoperate" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <append>true</append>
        <file>${LOG_HOME}/firmoperate/firmoperate.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_HOME}/allfirm/allfirm.%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %C{56} - %msg%n</pattern>
        </encoder>
    </appender>

    <appender name="globalError" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <append>true</append>
        <file>${LOG_HOME}/global/error.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <FileNamePattern>${LOG_HOME}/global/error.%d{yyyy-MM-dd}.log</FileNamePattern>
            <MaxHistory>30</MaxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %C{56} - %msg%n</pattern>
        </encoder>
    </appender>

    <logger name="com.baidu.nuomi.crm.monitor.aspect.ServiceAspect" level="INFO" additivity="false">
        <appender-ref ref="serviceMonitor"/>
    </logger>

    <logger name="com.baidu.nuomi.crm.monitor.aspect.DaoAspect" level="INFO" additivity="false">
        <appender-ref ref="daoMonitor"/>
    </logger>

    <logger name="opAccess" level="INFO" additivity="true">
        <appender-ref ref="opAccess"/>
    </logger>

    <logger name="opError" level="ERROR" additivity="true">
        <appender-ref ref="opError"/>
    </logger>
    
    <logger name="com.baidu.nuomi.crm.firmoperate" level="INFO" additivity="true">
        <appender-ref ref="firmoperate"/>
    </logger>

    <root level="INFO">
        <appender-ref ref="stdout"/>
        <appender-ref ref="globalError"/>
    </root>

    <!--jdbc -->
    <logger name="java.sql.Connection" level="debug" />
    <logger name="java.sql.PreparedStatement" level="debug" />
</configuration>


最后如果要更灵活的配置LogBack,可以将LogBack.xml中的日志路径等其他信息放在properties文件中



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值