Package own LogUtils - based Logback & Slf4j

Disclaimer: This article is a blogger original article, please indicate the source: http: //blog.csdn.net/deaidai https://blog.csdn.net/deaidai/article/details/90523717

Foreword

Unified, profile log output tools, welcome to give a better solution.

text

LogUtils.java

package com.hyperdai.contest.utils;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * author hyperdai
 * create 2019-05-24 21:26
 */
public class LogUtils {

    private static final Logger wechatCpFailLog = LoggerFactory
            .getLogger("com.hyperdai.dai.service.Ac.impl.WechatCpServiceImpl");

    private static final Logger worksServiceFailLog = LoggerFactory
            .getLogger("com.hyperdai.dai.service.Ac.impl.service.WorksServiceImpl");


    public static final Logger commonLog = LoggerFactory.getLogger(LogUtils.class);

    public static void logWechatError(String errMsg, Exception e) {
        loggerToFileAndAlert(wechatCpFailLog, errMsg, e);
    }

    public static void logWorksError(String errMsg, Exception e) {
        loggerToFileAndAlert(worksServiceFailLog, errMsg, e);
    }

    public static void log(String errMsg, Exception e) {
        loggerToFileAndAlert(commonLog, errMsg, e);
    }

    public static void loggerToFileAndAlert(Logger logger, String errMsg, Exception e) {
        if (e != null) {
            logger.error("errMsg = {}, e = ", errMsg, e);
            if (logger != commonLog) {
                commonLog.error("errMsg = {}, e = ", errMsg, e);
            }
        } else {
            logger.error("errMsg = {}", errMsg);
            if (logger != commonLog) {
                commonLog.error("errMsg = {}", errMsg);
            }
        }
    }
}

logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <property name="user.dir" value="./"/>

    <include resource="org/springframework/boot/logging/logback/base.xml"/>

    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <!-- encoder 默认配置为PatternLayoutEncoder -->
        <encoder>
            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
        </encoder>
    </appender>

    <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${user.dir}/log/customer_service_es.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${user.dir}/log/log-%d{yyyy-MM-dd}.gz</fileNamePattern>
            <maxHistory>90</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>${FILE_LOG_PATTERN}</pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>

    <appender name="works_service_fail" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${user.dir}/log/push_account_to_es_fail.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${user.dir}/log/works_service_fail-log-%d{yyyy-MM-dd}.gz</fileNamePattern>
            <maxHistory>15</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>${FILE_LOG_PATTERN}</pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>

    <appender name="wechat_service_fail" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${user.dir}/log/push_customer_to_es_fail.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${user.dir}/log/wechat_service_fail-log-%d{yyyy-MM-dd}.gz</fileNamePattern>
            <maxHistory>15</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>${FILE_LOG_PATTERN}</pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>


<!--    <logger name="org.apache.http" level="INFO">-->
<!--      <appender-ref ref="file"/>-->
<!--    </logger>-->
<!--    -->
<!--    <logger name="org.apache.http.wire" level="OFF">-->
<!--        <appender-ref ref="file"/>-->
<!--    </logger>-->

    <logger name="com.hyperdai.contest.service.impl.WorksServiceImpl" level="INFO" additivity="false">
        <appender-ref ref="works_service_fail"></appender-ref>
    </logger>

    <logger name="com.hyperdai.contest.service.impl.WechatCpServiceImpl" level="INFO" additivity="false">
        <appender-ref ref="wechat_service_fail"></appender-ref>
    </logger>

    <root level="INFO">
        <appender-ref ref="console"/>
        <appender-ref ref="file"/>
    </root>

    <!-- dev/beta -->
    <springProfile name="dev,dns,docker">
        <logger name="com.hyperdai.contest" level="DEBUG" additivity="false">
            <appender-ref ref="file"/>
            <appender-ref ref="console"/>
        </logger>
        <logger name="org.jooq" level="INFO" additivity="false">
            <appender-ref ref="file"/>
            <appender-ref ref="console"/>
        </logger>
    </springProfile>

    <!-- preview/prod -->
    <springProfile name="sandbox,preview,prod">
        <logger name="com.hyperdai.contest" level="INFO" additivity="false">
            <appender-ref ref="file"/>
        </logger>
        <logger name="org.jooq" level="INFO" additivity="false">
            <appender-ref ref="file"/>
        </logger>
    </springProfile>
</configuration>

Guess you like

Origin blog.csdn.net/deaidai/article/details/90523717