好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

聊聊springboot中整合log4g2的问题

1.导入jar

springboot默认是用logback的日志框架的,所以需要排除logback,不然会出现jar依赖冲突的报错。

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

<dependency>

            <groupId>org.springframework.boot</groupId>

            <artifactId>spring-boot-starter-web</artifactId>

            <exclusions><!-- 去掉springboot默认配置 -->

                <exclusion>

                    <groupId>org.springframework.boot</groupId>

                    <artifactId>spring-boot-starter-logging</artifactId>

                </exclusion>

            </exclusions>

        </dependency>

        <dependency> <!-- 引入log4j2依赖 -->

            <groupId>org.springframework.boot</groupId>

            <artifactId>spring-boot-starter-log4j2</artifactId>

        </dependency>

2.配置文件

1.如果自定义了文件名,需要在application.yml中配置

2.默认名log4j2-spring.xml,就省下了在application.yml中配置
在applicaiton.yaml中添加配置

?

1

2

3

4

5

6

7

8

9

10

11

logging:

   #日志文件

   config: classpath:log4g2.xml

   level:

     com.alibaba.nacos.client.config.impl: WARN

     cn.jay.repository: trace

   file:

     #${file.name} 后期可以改成${spring.application.name}

     path: /log/${file.name}

file:

   name: dome

在config中配置log4g2.xml文件

?

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

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

<?xml version= "1.0" encoding= "UTF-8" ?>

<!-- status= "OFF" ,可以去掉,它的含义为是否记录log4j2本身的event信息,默认是OFF -->

<configuration status= "off" monitorInterval= "60" >

     <!-- <properties>-->

     <!--     <property name= "projectName" >-->

     <!--         riiot-->

     <!--     </property>-->

     <!-- </properties>-->

 

 

     <appenders>

         <!-- 开发环境用 -->

         <Console name= "debug_console" target= "SYSTEM_OUT" >

             <PatternLayout pattern= "[%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p] [%traceId] [%t] {%c}-%m%n" />

             <Filters>

                 <ThresholdFilter level= "DEBUG" />

                 <ThresholdFilter level= "INFO" onMatch= "DENY" onMismatch= "NEUTRAL" />

             </Filters>

         </Console>

         <Console name= "console" target= "SYSTEM_OUT" >

             <PatternLayout pattern= "[%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p] [%traceId] [%t] {%c}-%m%n" />

             <Filters>

                 <ThresholdFilter level= "info" />

             </Filters>

         </Console>

 

         <!-- 输出日志到文件 每天一个文件(ERROR-FATAL级别) -->

         <RollingRandomAccessFile name= "AppErrorDailyRollingFile" fileName= "${sys:LOG_PATH}/AppError.log" append= "true" bufferedIO= "false" bufferSize= "256"

                                  filePattern= "${sys:LOG_PATH}/AppError.log.%d{yyyy-MM-dd}.log" >

             <PatternLayout pattern= "[%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p] [%traceId] [%t] {%c}-%m%n" />

             <Filters>

                 <ThresholdFilter level= "ERROR" />

             </Filters>

             <Policies>

                 <TimeBasedTriggeringPolicy modulate= "true" interval= "1" />

             </Policies>

         </RollingRandomAccessFile>

 

         <!-- 输出日志到文件 每天一个文件(WARN级别) -->

         <RollingRandomAccessFile name= "AppWarnDailyRollingFile" fileName= "${sys:LOG_PATH}/AppWarn.log" append= "true" bufferedIO= "true" bufferSize= "10240" immediateFlush= "false"

                                  filePattern= "${sys:LOG_PATH}/AppWarn.log.%d{yyyy-MM-dd}.log" >

             <PatternLayout pattern= "[%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p] [%traceId] [%t] {%c}-%m%n" />

             <Filters>

                 <ThresholdFilter level= "WARN" />

                 <ThresholdFilter level= "ERROR" onMatch= "DENY" onMismatch= "NEUTRAL" />

             </Filters>

             <Policies>

                 <TimeBasedTriggeringPolicy modulate= "true" interval= "1" />

             </Policies>

         </RollingRandomAccessFile>

 

         <!-- 输出日志到文件 每天一个文件(INFO级别) -->

         <RollingRandomAccessFile name= "AppInfoDailyRollingFile" fileName= "${sys:LOG_PATH}/AppAccess.log" append= "true" bufferedIO= "true" bufferSize= "409600" immediateFlush= "false"

                                  filePattern= "${sys:LOG_PATH}/AppAccess.log.%d{yyyy-MM-dd}.log" >

             <PatternLayout pattern= "[%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p] [%traceId] [%t] {%c}-%m%n" />

             <Filters>

                 <ThresholdFilter level= "INFO" />

                 <ThresholdFilter level= "WARN" onMatch= "DENY" onMismatch= "NEUTRAL" />

             </Filters>

             <Policies>

                 <TimeBasedTriggeringPolicy modulate= "true" interval= "1" />

             </Policies>

         </RollingRandomAccessFile>

 

         <!-- 输出日志到文件 每天一个文件(INFO级别) -->

         <RollingRandomAccessFile name= "DBAccessDailyRollingFile" fileName= "${sys:LOG_PATH}/DBAccess.log" append= "true" bufferedIO= "true" bufferSize= "409600" immediateFlush= "false"

                                  filePattern= "${sys:LOG_PATH}/DBAccess.log.%d{yyyy-MM-dd}.log" >

             <PatternLayout pattern= "[%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p] [%traceId] [%t] {%c}-%m%n" />

             <Filters>

                 <ThresholdFilter level= "INFO" />

                 <ThresholdFilter level= "WARN" onMatch= "DENY" onMismatch= "NEUTRAL" />

             </Filters>

             <Policies>

                 <TimeBasedTriggeringPolicy modulate= "true" interval= "1" />

             </Policies>

         </RollingRandomAccessFile>

 

         <!-- 输出日志到文件 每天一个文件(ERROR级别) -->

         <RollingRandomAccessFile name= "DBErrorDailyRollingFile" fileName= "${sys:LOG_PATH}/DBError.log" append= "true" bufferedIO= "false" bufferSize= "256"

                                  filePattern= "${sys:LOG_PATH}/DBError.log.%d{yyyy-MM-dd}.log" >

             <PatternLayout pattern= "[%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p] [%traceId] [%t] {%c}-%m%n" />

             <Filters>

                 <ThresholdFilter level= "WARN" />

             </Filters>

             <Policies>

                 <TimeBasedTriggeringPolicy modulate= "true" interval= "1" />

             </Policies>

         </RollingRandomAccessFile>

 

         <!-- 输出日志到文件 每天一个文件(ERROR级别) -->

         <RollingRandomAccessFile name= "SysErrorDailyRollingFile" fileName= "${sys:LOG_PATH}/SysError.log" append= "true" bufferedIO= "false"

                                  filePattern= "${sys:LOG_PATH}/SysError.log.%d{yyyy-MM-dd}.log" >

             <PatternLayout pattern= "[%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p] [%traceId] [%t] {%c}-%m%n" />

             <Filters>

                 <ThresholdFilter level= "WARN" />

             </Filters>

             <Policies>

                 <TimeBasedTriggeringPolicy modulate= "true" interval= "1" />

             </Policies>

         </RollingRandomAccessFile>

 

         <!-- 启动日志 -->

         <RollingRandomAccessFile name= "BootLog" fileName= "${sys:LOG_PATH}/Boot.log" append= "false" bufferedIO= "false"

                                  filePattern= "${sys:LOG_PATH}/Boot.log.%d{yyyy-MM-dd}.log" >

             <PatternLayout pattern= "[%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p] [%traceId] [%t] {%c}-%m%n" />

             <Filters>

                 <ThresholdFilter level= "INFO" />

             </Filters>

             <Policies>

                 <TimeBasedTriggeringPolicy modulate= "true" interval= "1" />

             </Policies>

         </RollingRandomAccessFile>

 

      <!--   <Kafka name= "SyncKafka" topic= "logs" syncSend= "false" >

             <PatternLayout pattern= "[%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p] [%traceId] [riiot] [${jar.name}] [%X{ip}] [dev] [%t] {%c}-%m" />

             <Property name= "bootstrap.servers" > 192.168 . 1.49 : 9092 </Property>

             <Property name= "acks" > 0 </Property>

             <Property name= "compression.type" >gzip</Property>

             <Property name= "max.block.ms" > 10000 </Property>

             <Filters>

                 <ThresholdFilter level= "INFO" />

             </Filters>

         </Kafka>

         &lt;!&ndash; 异步发送kafka &ndash;&gt;

         <Async name= "Kafka" bufferSize= "512" blocking= "false" >

             <AppenderRef ref= "SyncKafka" />

         </Async>

 

         <Kafka name= "KafkaErrLog" topic= "errLogTopic" syncSend= "false" >

             <PatternLayout pattern= "[%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p] [%traceId] [riiot] [${jar.name}] [%X{ip}] [dev] [%t] {%c}-%m" />

             <Property name= "bootstrap.servers" > 192.168 . 1.49 : 9092 </Property>

             <Property name= "acks" > 0 </Property>

             <Property name= "compression.type" >gzip</Property>

             <Filters>

                 <ThresholdFilter level= "ERROR" />

             </Filters>

         </Kafka>

         &lt;!&ndash; 异步发送kafka &ndash;&gt;

         <Async name= "AsyncKafkaErrLog" bufferSize= "512" blocking= "false" >

             <AppenderRef ref= "KafkaErrLog" />

         </Async>

-->

     </appenders>

 

     <loggers>

         <!-- 只把包名是com.cmsr的日志输出到文件 -->

         <logger name= "com.cmsr" additivity= "false" level= "debug" >

             <appender-ref ref= "AppErrorDailyRollingFile" />

             <appender-ref ref= "AppWarnDailyRollingFile" />

             <appender-ref ref= "AppInfoDailyRollingFile" />

             <appender-ref ref= "console" />

 

             <appender-ref ref= "debug_console" />

         </logger>

 

         <!-- 只把包名是com.cmsr.sicp.common.mybatis(DB正常执行,异常分别写到不同的log文件)的日志输出到文件 -->

         <logger name= "com.cmsr.sicp.common.mybatis" additivity= "false" level= "debug" >

             <appender-ref ref= "DBAccessDailyRollingFile" />

             <appender-ref ref= "DBErrorDailyRollingFile" />

             <appender-ref ref= "console" />

 

         </logger>

 

         <!-- 过滤springframework输出,提高启动速度 (生产环境中需要整体删除)-->

         <logger name= "org.springframework" additivity= "false" level= "warn" >

             <appender-ref ref= "console" />

         </logger>

 

         <!-- 启动日志单独输出 -->

         <logger name= "com.cmsr.Launcher" additivity= "false" level= "info" >

             <appender-ref ref= "BootLog" />

             <appender-ref ref= "console" />

         </logger>

 

         <!-- 定义全局。其他包的日志只输出到控制台,不输出到日志文件 -->

         <root level= "error" >

             <appender-ref ref= "SysErrorDailyRollingFile" />

             <appender-ref ref= "console" />

 

         </root>

     </loggers>

</configuration>

到此这篇关于springboot中整合log4g2的文章就介绍到这了,更多相关springboot整合log4g2内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

原文链接:https://blog.csdn.net/qq_38092788/article/details/121096315

查看更多关于聊聊springboot中整合log4g2的问题的详细内容...

  阅读:16次