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