Parcourir la source

logback 配置

gxt il y a 3 ans
Parent
commit
76cded0267

+ 5 - 37
src/main/java/com/gct/tools/etlcamelhuge/MQ/DefaultMsgSendFailCallBack.java

@@ -1,6 +1,8 @@
1 1
 package com.gct.tools.etlcamelhuge.MQ;
2 2
 
3 3
 import lombok.extern.slf4j.Slf4j;
4
+import org.slf4j.Logger;
5
+import org.slf4j.LoggerFactory;
4 6
 
5 7
 import java.io.File;
6 8
 import java.io.IOException;
@@ -9,7 +11,6 @@ import java.time.format.DateTimeFormatter;
9 11
 import java.util.logging.FileHandler;
10 12
 import java.util.logging.Formatter;
11 13
 import java.util.logging.LogRecord;
12
-import java.util.logging.Logger;
13 14
 
14 15
 /**
15 16
  * class name: DiagnoseMsgSendFailCallBack
@@ -21,42 +22,9 @@ import java.util.logging.Logger;
21 22
 @Slf4j
22 23
 public class DefaultMsgSendFailCallBack {
23 24
 
24
-    public synchronized static void  accept(MessageBody msg, String logFilePath) {
25
-        String msgJson = msg.toJsonBody();
26
-        String fileName = logFilePath + "-" + LocalDate.now().format(DateTimeFormatter.ISO_DATE);
27
-        File file = new File(fileName);
28
-        if (!file.getParentFile().exists())
29
-            if (!file.getParentFile().mkdirs()) {
30
-                log.error("create log file failed,method:mkdirs()");
31
-                return;
32
-            }
33
-        if (!file.exists()) {
34
-            try {
35
-                if (!file.createNewFile()) {
36
-                    log.error("create log file failed,method:createNewFile()");
37
-                    return;
38
-                }
39
-            } catch (IOException ioException) {
40
-                log.error("create log file failed, cause by:{}", ioException.getMessage());
41
-                return;
42
-            }
43
-        }
44
-        try {
45
-            FileHandler fileHandler = new FileHandler(fileName, true);
46
-            fileHandler.setFormatter(new Formatter() {
47
-                @Override
48
-                public String format(LogRecord logRecord) {
49
-                    return logRecord.getMessage();
50
-                }
51
-            });
52
-            Logger logger = Logger.getLogger(DefaultMsgSendFailCallBack.class.getTypeName());
53
-            logger.setUseParentHandlers(false);
54
-            logger.addHandler(fileHandler);
55
-            logger.info(msgJson + "\n");
56
-
57
-        } catch (IOException ioException) {
58
-            log.error("run logger handler failed, cause by:{}", ioException.getMessage());
59
-        }
25
+    public synchronized static void  accept(MessageBody msg, String logFilePath,Class<? extends MessageProducer> classz) {
26
+        Logger log = LoggerFactory.getLogger(classz);
27
+        log.error(msg.toJsonBody());
60 28
 
61 29
 
62 30
     }

+ 5 - 7
src/main/java/com/gct/tools/etlcamelhuge/MQ/GCTRocketMQConfiguration.java

@@ -1,5 +1,7 @@
1 1
 package com.gct.tools.etlcamelhuge.MQ;
2 2
 
3
+import com.alibaba.fastjson.JSON;
4
+import com.alibaba.fastjson.JSONObject;
3 5
 import org.apache.rocketmq.client.AccessChannel;
4 6
 import org.apache.rocketmq.client.producer.DefaultMQProducer;
5 7
 import org.apache.rocketmq.spring.support.RocketMQUtil;
@@ -11,6 +13,7 @@ import org.springframework.context.annotation.Bean;
11 13
 import org.springframework.context.annotation.Configuration;
12 14
 import org.springframework.util.Assert;
13 15
 import org.springframework.util.StringUtils;
16
+import springfox.documentation.spring.web.json.Json;
14 17
 
15 18
 /**
16 19
  * class name: GCTRocketMQConfiguration
@@ -54,10 +57,7 @@ public class GCTRocketMQConfiguration {
54 57
                                                    @Qualifier("defaultMsgSendSuccessCallBack") SendSuccessCallBack successCallBack) {
55 58
         GCTRocketMQProperties one = properties.getOne();
56 59
         return new DiagnoseMessageProducer(buildDefaultMQProducer(one), one, (e, msg) -> {
57
-            System.out.println("send diagnose message failed ++++"+e.getMessage());
58
-            Logger log = LoggerFactory.getLogger(DiagnoseMessageProducer.class);
59
-            log.error("send diagnose message failed  cause by:{},stack:{}", e.getMessage(), e.getStackTrace());
60
-            DefaultMsgSendFailCallBack.accept(msg, one.getLogFilePath());
60
+            DefaultMsgSendFailCallBack.accept(msg, one.getLogFilePath(),DiagnoseMessageProducer.class);
61 61
         }, successCallBack);
62 62
     }
63 63
 
@@ -66,9 +66,7 @@ public class GCTRocketMQConfiguration {
66 66
                                                @Qualifier("defaultMsgSendSuccessCallBack") SendSuccessCallBack successCallBack) {
67 67
         GCTRocketMQProperties two = properties.getTwo();
68 68
         return new WarnMessageProducer(buildDefaultMQProducer(two), two, (e, msg) -> {
69
-            Logger log = LoggerFactory.getLogger(WarnMessageProducer.class);
70
-            log.error("send warn message failed  cause by:{},stack:{}", e.getMessage(), e.getStackTrace());
71
-            DefaultMsgSendFailCallBack.accept(msg, two.getLogFilePath());
69
+            DefaultMsgSendFailCallBack.accept(msg, two.getLogFilePath(),WarnMessageProducer.class);
72 70
         }, successCallBack);
73 71
     }
74 72
 

+ 192 - 0
src/main/resources/logback-spring.xml

@@ -0,0 +1,192 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出 -->
3
+<!-- scan:当此属性设置为true时,配置文档如果发生改变,将会被重新加载,默认值为true -->
4
+<!-- scanPeriod:设置监测配置文档是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。
5
+                 当scan为true时,此属性生效。默认的时间间隔为1分钟。 -->
6
+<!-- debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 -->
7
+<configuration  scan="true" scanPeriod="10 seconds">
8
+    <contextName>logback</contextName>
9
+
10
+    <!-- name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义后,可以使“${}”来使用变量。 -->
11
+    <property name="log.path" value="/home/logs" />
12
+
13
+    <!--0. 日志格式和颜色渲染 -->
14
+    <!-- 彩色日志依赖的渲染类 -->
15
+    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
16
+    <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
17
+    <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
18
+    <!-- 彩色日志格式 -->
19
+    <property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
20
+
21
+    <!--1. 输出到控制台-->
22
+    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
23
+        <!--此日志appender是为开发使用,只配置最底级别,控制台输出的日志级别是大于或等于此级别的日志信息-->
24
+        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
25
+            <level>debug</level>
26
+        </filter>
27
+        <encoder>
28
+            <Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
29
+            <!-- 设置字符集 -->
30
+            <charset>UTF-8</charset>
31
+        </encoder>
32
+    </appender>
33
+
34
+    <!--2. 输出到文档-->
35
+    <!-- 2.1 level为 DEBUG 日志,时间滚动输出  -->
36
+    <appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
37
+        <!-- 正在记录的日志文档的路径及文档名 -->
38
+        <file>${log.path}/web_debug.log</file>
39
+        <!--日志文档输出格式-->
40
+        <encoder>
41
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
42
+            <charset>UTF-8</charset> <!-- 设置字符集 -->
43
+        </encoder>
44
+        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
45
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
46
+            <!-- 日志归档 -->
47
+            <fileNamePattern>${log.path}/web-debug-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
48
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
49
+                <maxFileSize>100MB</maxFileSize>
50
+            </timeBasedFileNamingAndTriggeringPolicy>
51
+            <!--日志文档保留天数-->
52
+            <maxHistory>15</maxHistory>
53
+        </rollingPolicy>
54
+        <!-- 此日志文档只记录debug级别的 -->
55
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
56
+            <level>debug</level>
57
+            <onMatch>ACCEPT</onMatch>
58
+            <onMismatch>DENY</onMismatch>
59
+        </filter>
60
+    </appender>
61
+
62
+    <!-- 2.2 level为 INFO 日志,时间滚动输出  -->
63
+    <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
64
+        <!-- 正在记录的日志文档的路径及文档名 -->
65
+        <file>${log.path}/web_info.log</file>
66
+        <!--日志文档输出格式-->
67
+        <encoder>
68
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
69
+            <charset>UTF-8</charset>
70
+        </encoder>
71
+        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
72
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
73
+            <!-- 每天日志归档路径以及格式 -->
74
+            <fileNamePattern>${log.path}/web-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
75
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
76
+                <maxFileSize>100MB</maxFileSize>
77
+            </timeBasedFileNamingAndTriggeringPolicy>
78
+            <!--日志文档保留天数-->
79
+            <maxHistory>15</maxHistory>
80
+        </rollingPolicy>
81
+        <!-- 此日志文档只记录info级别的 -->
82
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
83
+            <level>info</level>
84
+            <onMatch>ACCEPT</onMatch>
85
+            <onMismatch>DENY</onMismatch>
86
+        </filter>
87
+    </appender>
88
+
89
+    <!-- 2.3 level为 WARN 日志,时间滚动输出  -->
90
+    <appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
91
+        <!-- 正在记录的日志文档的路径及文档名 -->
92
+        <file>${log.path}/web_warn.log</file>
93
+        <!--日志文档输出格式-->
94
+        <encoder>
95
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
96
+            <charset>UTF-8</charset> <!-- 此处设置字符集 -->
97
+        </encoder>
98
+        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
99
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
100
+            <fileNamePattern>${log.path}/web-warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
101
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
102
+                <maxFileSize>100MB</maxFileSize>
103
+            </timeBasedFileNamingAndTriggeringPolicy>
104
+            <!--日志文档保留天数-->
105
+            <maxHistory>15</maxHistory>
106
+        </rollingPolicy>
107
+        <!-- 此日志文档只记录warn级别的 -->
108
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
109
+            <level>warn</level>
110
+            <onMatch>ACCEPT</onMatch>
111
+            <onMismatch>DENY</onMismatch>
112
+        </filter>
113
+    </appender>
114
+
115
+    <!-- 2.4 level为 ERROR 日志,时间滚动输出  -->
116
+    <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
117
+        <!-- 正在记录的日志文档的路径及文档名 -->
118
+        <file>${log.path}/web_error.log</file>
119
+        <!--日志文档输出格式-->
120
+        <encoder>
121
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
122
+            <charset>UTF-8</charset> <!-- 此处设置字符集 -->
123
+        </encoder>
124
+        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
125
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
126
+            <fileNamePattern>${log.path}/web-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
127
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
128
+                <maxFileSize>100MB</maxFileSize>
129
+            </timeBasedFileNamingAndTriggeringPolicy>
130
+            <!--日志文档保留天数-->
131
+            <maxHistory>15</maxHistory>
132
+        </rollingPolicy>
133
+        <!-- 此日志文档只记录ERROR级别的 -->
134
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
135
+            <level>ERROR</level>
136
+            <onMatch>ACCEPT</onMatch>
137
+            <onMismatch>DENY</onMismatch>
138
+        </filter>
139
+    </appender>
140
+
141
+    <appender name="aaaa" class="ch.qos.logback.core.rolling.RollingFileAppender">
142
+        <!-- 正在记录的日志文档的路径及文档名 -->
143
+        <file>${log.path}/msg.log</file>
144
+        <!--日志文档输出格式-->
145
+        <encoder>
146
+            <pattern>%msg%n</pattern>
147
+            <charset>UTF-8</charset> <!-- 此处设置字符集 -->
148
+        </encoder>
149
+        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
150
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
151
+            <fileNamePattern>${log.path}/%d{yyyy-MM-dd HH:mm:ss}.%i-msg.log</fileNamePattern>
152
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
153
+                <maxFileSize>100MB</maxFileSize>
154
+            </timeBasedFileNamingAndTriggeringPolicy>
155
+            <!--日志文档保留天数-->
156
+            <maxHistory>15</maxHistory>
157
+        </rollingPolicy>
158
+        <!-- 此日志文档只记录ERROR级别的 -->
159
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
160
+            <level>ERROR</level>
161
+            <onMatch>ACCEPT</onMatch>
162
+            <onMismatch>DENY</onMismatch>
163
+        </filter>
164
+    </appender>
165
+    <!-- 4. 最终的策略 -->
166
+    <!-- 4.1 开发环境:打印控制台-->
167
+    <springProfile name="dev">
168
+        <logger name="com.sdcm.pmp" level="debug"/>
169
+    </springProfile>
170
+    <logger name="com.gct.tools.etlcamelhuge.MQ.DiagnoseMessageProducer"  additivity="false">
171
+        <appender-ref ref="aaaa" />
172
+    </logger>
173
+    <root level="info">
174
+        <appender-ref ref="CONSOLE" />
175
+        <appender-ref ref="DEBUG_FILE" />
176
+        <appender-ref ref="INFO_FILE" />
177
+        <appender-ref ref="WARN_FILE" />
178
+        <appender-ref ref="ERROR_FILE" />
179
+    </root>
180
+
181
+    <!-- 4.2 生产环境:输出到文档
182
+    <springProfile name="pro">
183
+        <root level="info">
184
+            <appender-ref ref="CONSOLE" />
185
+            <appender-ref ref="DEBUG_FILE" />
186
+            <appender-ref ref="INFO_FILE" />
187
+            <appender-ref ref="ERROR_FILE" />
188
+            <appender-ref ref="WARN_FILE" />
189
+        </root>
190
+    </springProfile> -->
191
+
192
+</configuration>