Commit 360fe689b1df765ca6754d32921c1ee18f9e9c00

Authored by xubinbin
1 parent 5a962184

增加日志记录时的完全限定类名,用于定位日志位置。

ps:2023-12-12 16:30:58.779 [Thread-10]  INFO --- gov.nist.javax.sip.stack.UDPMessageChannel : 81 Done processing MESSAGE sip:44010200492000000003@4401020049 SIP/2.0
日志中的“gov.nist.javax.sip.stack.UDPMessageChannel”内容
src/main/java/com/genersoft/iot/vmp/gb28181/conf/StackLoggerImpl.java
1 package com.genersoft.iot.vmp.gb28181.conf; 1 package com.genersoft.iot.vmp.gb28181.conf;
2 2
3 import gov.nist.core.StackLogger; 3 import gov.nist.core.StackLogger;
4 -import org.slf4j.Logger;  
5 import org.slf4j.LoggerFactory; 4 import org.slf4j.LoggerFactory;
  5 +import org.slf4j.spi.LocationAwareLogger;
6 import org.springframework.stereotype.Component; 6 import org.springframework.stereotype.Component;
7 7
8 import java.util.Properties; 8 import java.util.Properties;
@@ -10,100 +10,132 @@ import java.util.Properties; @@ -10,100 +10,132 @@ import java.util.Properties;
10 @Component 10 @Component
11 public class StackLoggerImpl implements StackLogger { 11 public class StackLoggerImpl implements StackLogger {
12 12
13 - private final static Logger logger = LoggerFactory.getLogger(StackLoggerImpl.class); 13 + /**
  14 + * 完全限定类名(Fully Qualified Class Name),用于定位日志位置
  15 + */
  16 + private static final String FQCN = StackLoggerImpl.class.getName();
  17 +
  18 + /**
  19 + * 获取栈中类信息(以便底层日志记录系统能够提取正确的位置信息(方法名、行号))
  20 + * @return LocationAwareLogger
  21 + */
  22 + private static LocationAwareLogger getLocationAwareLogger() {
  23 + return (LocationAwareLogger) LoggerFactory.getLogger(new Throwable().getStackTrace()[4].getClassName());
  24 + }
  25 +
  26 +
  27 + /**
  28 + * 封装打印日志的位置信息
  29 + * @param level 日志级别
  30 + * @param message 日志事件的消息
  31 + */
  32 + private static void log(int level, String message) {
  33 + LocationAwareLogger locationAwareLogger = getLocationAwareLogger();
  34 + locationAwareLogger.log(null, FQCN, level, message, null, null);
  35 + }
  36 +
  37 + /**
  38 + * 封装打印日志的位置信息
  39 + * @param level 日志级别
  40 + * @param message 日志事件的消息
  41 + */
  42 + private static void log(int level, String message, Throwable throwable) {
  43 + LocationAwareLogger locationAwareLogger = getLocationAwareLogger();
  44 + locationAwareLogger.log(null, FQCN, level, message, null, throwable);
  45 + }
  46 +
  47 + @Override
  48 + public void logStackTrace() {
  49 +
  50 + }
  51 +
  52 + @Override
  53 + public void logStackTrace(int traceLevel) {
  54 + System.out.println("traceLevel: " + traceLevel);
  55 + }
  56 +
  57 + @Override
  58 + public int getLineCount() {
  59 + return 0;
  60 + }
  61 +
  62 + @Override
  63 + public void logException(Throwable ex) {
  64 +
  65 + }
  66 +
  67 + @Override
  68 + public void logDebug(String message) {
  69 + log(LocationAwareLogger.INFO_INT, message);
  70 + }
  71 +
  72 + @Override
  73 + public void logDebug(String message, Exception ex) {
  74 + log(LocationAwareLogger.INFO_INT, message, ex);
  75 + }
  76 +
  77 + @Override
  78 + public void logTrace(String message) {
  79 + log(LocationAwareLogger.INFO_INT, message);
  80 + }
  81 +
  82 + @Override
  83 + public void logFatalError(String message) {
  84 + log(LocationAwareLogger.INFO_INT, message);
  85 + }
  86 +
  87 + @Override
  88 + public void logError(String message) {
  89 + log(LocationAwareLogger.INFO_INT, message);
  90 + }
  91 +
  92 + @Override
  93 + public boolean isLoggingEnabled() {
  94 + return true;
  95 + }
  96 +
  97 + @Override
  98 + public boolean isLoggingEnabled(int logLevel) {
  99 + return true;
  100 + }
  101 +
  102 + @Override
  103 + public void logError(String message, Exception ex) {
  104 + log(LocationAwareLogger.INFO_INT, message, ex);
  105 + }
  106 +
  107 + @Override
  108 + public void logWarning(String message) {
  109 + log(LocationAwareLogger.INFO_INT, message);
  110 + }
  111 +
  112 + @Override
  113 + public void logInfo(String message) {
  114 + log(LocationAwareLogger.INFO_INT, message);
  115 + }
  116 +
  117 + @Override
  118 + public void disableLogging() {
  119 +
  120 + }
  121 +
  122 + @Override
  123 + public void enableLogging() {
  124 +
  125 + }
  126 +
  127 + @Override
  128 + public void setBuildTimeStamp(String buildTimeStamp) {
  129 +
  130 + }
  131 +
  132 + @Override
  133 + public void setStackProperties(Properties stackProperties) {
14 134
15 - @Override  
16 - public void logStackTrace() { 135 + }
17 136
18 - }  
19 -  
20 - @Override  
21 - public void logStackTrace(int traceLevel) {  
22 - System.out.println("traceLevel: " + traceLevel);  
23 - }  
24 -  
25 - @Override  
26 - public int getLineCount() {  
27 - return 0;  
28 - }  
29 -  
30 - @Override  
31 - public void logException(Throwable ex) {  
32 -  
33 - }  
34 -  
35 - @Override  
36 - public void logDebug(String message) {  
37 -// logger.debug(message);  
38 - }  
39 -  
40 - @Override  
41 - public void logDebug(String message, Exception ex) {  
42 -// logger.debug(message);  
43 - }  
44 -  
45 - @Override  
46 - public void logTrace(String message) {  
47 - logger.trace(message);  
48 - }  
49 -  
50 - @Override  
51 - public void logFatalError(String message) {  
52 -// logger.error(message);  
53 - }  
54 -  
55 - @Override  
56 - public void logError(String message) {  
57 -// logger.error(message);  
58 - }  
59 -  
60 - @Override  
61 - public boolean isLoggingEnabled() {  
62 - return true;  
63 - }  
64 -  
65 - @Override  
66 - public boolean isLoggingEnabled(int logLevel) {  
67 - return true;  
68 - }  
69 -  
70 - @Override  
71 - public void logError(String message, Exception ex) {  
72 -// logger.error(message);  
73 - }  
74 -  
75 - @Override  
76 - public void logWarning(String message) {  
77 - logger.warn(message);  
78 - }  
79 -  
80 - @Override  
81 - public void logInfo(String message) {  
82 - logger.info(message);  
83 - }  
84 -  
85 - @Override  
86 - public void disableLogging() {  
87 -  
88 - }  
89 -  
90 - @Override  
91 - public void enableLogging() {  
92 -  
93 - }  
94 -  
95 - @Override  
96 - public void setBuildTimeStamp(String buildTimeStamp) {  
97 -  
98 - }  
99 -  
100 - @Override  
101 - public void setStackProperties(Properties stackProperties) {  
102 -  
103 - }  
104 -  
105 - @Override  
106 - public String getLoggerName() {  
107 - return null;  
108 - } 137 + @Override
  138 + public String getLoggerName() {
  139 + return null;
  140 + }
109 } 141 }