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>