好得很程序员自学网

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

使用logback实现按自己的需求打印日志到自定义的文件里

定义工具类-创建对应的日志对象 定义枚举类-存储定义的日志文件名称 logback.xml里配置对应的日志名称和日志等级

1、工具类 LoggerUtils

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

public class LoggerUtils {

     public static <T> Logger Logger(Class<T> clazz) {

         return LoggerFactory.getLogger(clazz);

     }

     /**

      * 打印到指定的文件下

      *

      * @param desc 日志文件名称

      * @return

      */

     public static Logger Logger(LogFileName desc) {

         return LoggerFactory.getLogger(desc.getLogFileName());

     }

}

2、枚举类 LogFileName

?

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

import org.apache测试数据mons.lang3.StringUtils;

public enum LogFileName {

     //配置到logback.xml中的logger name="getNextHh"

     GET_NEXT_HH( "getNextHh" ),

     GET_AGAIN_HH( "getAgainHh" ),

     GET_AI_ACTION( "getAiAction" ),

     TRAIN_ERROR( "trainError" ),

     USER_ERROR( "userError" ),

     PAY_ERROR( "payError" ),

     REVIEW_ERROR( "reviewError" ),

     WX_ERROR( "wxError" ),

     SYSTEM_ERROR( "systemError" ),

     PAY_DEBUG( "payDebug" );

     private String logFileName;

     LogFileName(String fileName) {

         this .logFileName = fileName;

     }

     public String getLogFileName() {

         return logFileName;

     }

     public void setLogFileName(String logFileName) {

         this .logFileName = logFileName;

     }

     public static LogFileName getAwardTypeEnum(String value) {

         LogFileName[] arr = values();

         for (LogFileName item : arr) {

             if ( null != item && StringUtils.isNotBlank(item.logFileName)) {

                 return item;

             }

         }

         return null ;

     }

}

3、logger.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

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216

217

218

219

220

221

222

223

224

225

226

227

228

229

230

231

232

233

234

235

236

237

238

239

240

241

242

243

244

245

246

247

248

249

250

251

252

253

254

255

256

257

258

259

260

261

262

263

264

265

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

< configuration xmlns:xsi = "http://HdhCmsTestw3.org/2001/XMLSchema-instance"

                xsi:noNamespaceSchemaLocation = "http://HdhCmsTestpadual测试数据/java/logback.xsd" debug = "false"

                scan = "true" scanPeriod = "30 second" >

     < property name = "PROJECT" value = "poker_system" />

     < property name = "ROOT" value = "C:/Users/Administrator/Desktop/logs/${PROJECT}/" />

     < property name = "FILESIZE" value = "50MB" />

     < property name = "MAXHISTORY" value = "30" />

     <!-- 彩色日志 -->

     <!-- 彩色日志依赖的渲染类 -->

     < conversionRule conversionWord = "clr" converterClass = "org.springframework.boot.logging.logback.ColorConverter" />

     < conversionRule conversionWord = "wex"

                     converterClass = "org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />

     < conversionRule conversionWord = "wEx"

                     converterClass = "org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />

     <!-- 彩色日志格式 -->

     < 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}}" />

     < timestamp key = "DATETIME" datePattern = "yyyy-MM-dd HH:mm:ss" />

     <!-- 控制台打印 -->

     < appender name = "STDOUT" class = "ch.qos.logback.core.ConsoleAppender" >

         < encoder >

             < pattern >${CONSOLE_LOG_PATTERN}</ pattern >

             < charset >UTF-8</ charset >

         </ encoder >

     </ appender >

     <!-- ERROR 输入到文件,按日期和文件大小 -->

     < appender name = "ERROR-OUT" class = "ch.qos.logback.core.rolling.RollingFileAppender" >

         < encoder >

             < pattern >${CONSOLE_LOG_PATTERN}</ pattern >

         </ encoder >

         < filter class = "ch.qos.logback.classic.filter.LevelFilter" >

             <!--过滤器,只打ERROR级别的日志-->

             < level >ERROR</ level >

             < onMatch >ACCEPT</ onMatch >

             < onMismatch >DENY</ onMismatch >

         </ filter >

         < rollingPolicy class = "ch.qos.logback.core.rolling.TimeBasedRollingPolicy" >

             < fileNamePattern >${ROOT}%d/error/systemError.%i.log</ fileNamePattern >

             < maxHistory >${MAXHISTORY}</ maxHistory >

             < timeBasedFileNamingAndTriggeringPolicy class = "ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP" >

                 < maxFileSize >${FILESIZE}</ maxFileSize >

             </ timeBasedFileNamingAndTriggeringPolicy >

         </ rollingPolicy >

     </ appender >

     < appender name = "TRAINERROR-OUT" class = "ch.qos.logback.core.rolling.RollingFileAppender" >

         < encoder >

             < pattern >${CONSOLE_LOG_PATTERN}</ pattern >

         </ encoder >

         < filter class = "ch.qos.logback.classic.filter.LevelFilter" >

             <!--过滤器,只打ERROR级别的日志-->

             < level >ERROR</ level >

             < onMatch >ACCEPT</ onMatch >

             < onMismatch >DENY</ onMismatch >

         </ filter >

         < rollingPolicy class = "ch.qos.logback.core.rolling.TimeBasedRollingPolicy" >

             < fileNamePattern >${ROOT}%d/error/trainError.%i.log</ fileNamePattern >

             < maxHistory >${MAXHISTORY}</ maxHistory >

             < timeBasedFileNamingAndTriggeringPolicy class = "ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP" >

                 < maxFileSize >${FILESIZE}</ maxFileSize >

             </ timeBasedFileNamingAndTriggeringPolicy >

         </ rollingPolicy >

     </ appender >

     < appender name = "USERERROR-OUT" class = "ch.qos.logback.core.rolling.RollingFileAppender" >

         < encoder >

             < pattern >${CONSOLE_LOG_PATTERN}</ pattern >

         </ encoder >

         < filter class = "ch.qos.logback.classic.filter.LevelFilter" >

             <!--过滤器,只打ERROR级别的日志-->

             < level >ERROR</ level >

             < onMatch >ACCEPT</ onMatch >

             < onMismatch >DENY</ onMismatch >

         </ filter >

         < rollingPolicy class = "ch.qos.logback.core.rolling.TimeBasedRollingPolicy" >

             < fileNamePattern >${ROOT}%d/error/userError.%i.log</ fileNamePattern >

             < maxHistory >${MAXHISTORY}</ maxHistory >

             < timeBasedFileNamingAndTriggeringPolicy class = "ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP" >

                 < maxFileSize >${FILESIZE}</ maxFileSize >

             </ timeBasedFileNamingAndTriggeringPolicy >

         </ rollingPolicy >

     </ appender >

     < appender name = "PAYERROR-OUT" class = "ch.qos.logback.core.rolling.RollingFileAppender" >

         < encoder >

             < pattern >${CONSOLE_LOG_PATTERN}</ pattern >

         </ encoder >

         < filter class = "ch.qos.logback.classic.filter.LevelFilter" >

             <!--过滤器,只打ERROR级别的日志-->

             < level >ERROR</ level >

             < onMatch >ACCEPT</ onMatch >

             < onMismatch >DENY</ onMismatch >

         </ filter >

         < rollingPolicy class = "ch.qos.logback.core.rolling.TimeBasedRollingPolicy" >

             < fileNamePattern >${ROOT}%d/error/payError.%i.log</ fileNamePattern >

             < maxHistory >${MAXHISTORY}</ maxHistory >

             < timeBasedFileNamingAndTriggeringPolicy class = "ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP" >

                 < maxFileSize >${FILESIZE}</ maxFileSize >

             </ timeBasedFileNamingAndTriggeringPolicy >

         </ rollingPolicy >

     </ appender >

     < appender name = "REVIEWERROR-OUT" class = "ch.qos.logback.core.rolling.RollingFileAppender" >

         < encoder >

             < pattern >${CONSOLE_LOG_PATTERN}</ pattern >

         </ encoder >

         < filter class = "ch.qos.logback.classic.filter.LevelFilter" >

             <!--过滤器,只打ERROR级别的日志-->

             < level >ERROR</ level >

             < onMatch >ACCEPT</ onMatch >

             < onMismatch >DENY</ onMismatch >

         </ filter >

         < rollingPolicy class = "ch.qos.logback.core.rolling.TimeBasedRollingPolicy" >

             < fileNamePattern >${ROOT}%d/error/reviewError.%i.log</ fileNamePattern >

             < maxHistory >${MAXHISTORY}</ maxHistory >

             < timeBasedFileNamingAndTriggeringPolicy class = "ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP" >

                 < maxFileSize >${FILESIZE}</ maxFileSize >

             </ timeBasedFileNamingAndTriggeringPolicy >

         </ rollingPolicy >

     </ appender >

     <!-- WARN 输入到文件,按日期和文件大小 -->

     < appender name = "WARN-OUT" class = "ch.qos.logback.core.rolling.RollingFileAppender" >

         < encoder >

             < pattern >${CONSOLE_LOG_PATTERN}</ pattern >

         </ encoder >

         < filter class = "ch.qos.logback.classic.filter.LevelFilter" >

             < level >WARN</ level >

             < onMatch >ACCEPT</ onMatch >

             < onMismatch >DENY</ onMismatch >

         </ filter >

         < rollingPolicy class = "ch.qos.logback.core.rolling.TimeBasedRollingPolicy" >

             < fileNamePattern >${ROOT}%d/warn.%i.log</ fileNamePattern >

             < maxHistory >${MAXHISTORY}</ maxHistory >

             < timeBasedFileNamingAndTriggeringPolicy class = "ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP" >

                 < maxFileSize >${FILESIZE}</ maxFileSize >

             </ timeBasedFileNamingAndTriggeringPolicy >

         </ rollingPolicy >

     </ appender >

     <!-- INFO 输入到文件,按日期和文件大小 -->

     < appender name = "INFO-OUT" class = "ch.qos.logback.core.rolling.RollingFileAppender" >

         < encoder >

             < pattern >${CONSOLE_LOG_PATTERN}</ pattern >

         </ encoder >

         < filter class = "ch.qos.logback.classic.filter.LevelFilter" >

             < level >INFO</ level >

             < onMatch >ACCEPT</ onMatch >

             < onMismatch >DENY</ onMismatch >

         </ filter >

         < rollingPolicy class = "ch.qos.logback.core.rolling.TimeBasedRollingPolicy" >

             < fileNamePattern >${ROOT}%d/info.%i.log</ fileNamePattern >

             < maxHistory >${MAXHISTORY}</ maxHistory >

             < timeBasedFileNamingAndTriggeringPolicy class = "ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP" >

                 < maxFileSize >${FILESIZE}</ maxFileSize >

             </ timeBasedFileNamingAndTriggeringPolicy >

         </ rollingPolicy >

     </ appender >

     <!-- DEBUG 输入到文件,按日期和文件大小 -->

     < appender name = "DEBUG-OUT" class = "ch.qos.logback.core.rolling.RollingFileAppender" >

         < encoder >

             < pattern >${CONSOLE_LOG_PATTERN}</ pattern >

         </ encoder >

         < filter class = "ch.qos.logback.classic.filter.LevelFilter" >

             < level >DEBUG</ level >

             < onMatch >ACCEPT</ onMatch >

             < onMismatch >DENY</ onMismatch >

         </ filter >

         < rollingPolicy class = "ch.qos.logback.core.rolling.TimeBasedRollingPolicy" >

             < fileNamePattern >${ROOT}%d/debug.%i.log</ fileNamePattern >

             < maxHistory >${MAXHISTORY}</ maxHistory >

             < timeBasedFileNamingAndTriggeringPolicy class = "ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP" >

                 < maxFileSize >${FILESIZE}</ maxFileSize >

             </ timeBasedFileNamingAndTriggeringPolicy >

         </ rollingPolicy >

     </ appender >

     <!-- DEBUG 输入到文件,按日期和文件大小 -->

     < appender name = "PAYDEBUG-OUT" class = "ch.qos.logback.core.rolling.RollingFileAppender" >

         < encoder >

             < pattern >${CONSOLE_LOG_PATTERN}</ pattern >

         </ encoder >

         < filter class = "ch.qos.logback.classic.filter.LevelFilter" >

             < level >DEBUG</ level >

             < onMatch >ACCEPT</ onMatch >

             < onMismatch >DENY</ onMismatch >

         </ filter >

         < rollingPolicy class = "ch.qos.logback.core.rolling.TimeBasedRollingPolicy" >

             < fileNamePattern >${ROOT}%d/debug/payDebug.%i.log</ fileNamePattern >

             < maxHistory >${MAXHISTORY}</ maxHistory >

             < timeBasedFileNamingAndTriggeringPolicy class = "ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP" >

                 < maxFileSize >${FILESIZE}</ maxFileSize >

             </ timeBasedFileNamingAndTriggeringPolicy >

         </ rollingPolicy >

     </ appender >

     <!-- TRACE 输入到文件,按日期和文件大小 -->

     < appender name = "TRACE-OUT" class = "ch.qos.logback.core.rolling.RollingFileAppender" >

         < encoder >

             < pattern >${CONSOLE_LOG_PATTERN}</ pattern >

         </ encoder >

         < filter class = "ch.qos.logback.classic.filter.LevelFilter" >

             < level >TRACE</ level >

             < onMatch >ACCEPT</ onMatch >

             < onMismatch >DENY</ onMismatch >

         </ filter >

         < rollingPolicy class = "ch.qos.logback.core.rolling.TimeBasedRollingPolicy" >

             < fileNamePattern >${ROOT}%d/trace.%i.log</ fileNamePattern >

             < maxHistory >${MAXHISTORY}</ maxHistory >

             < timeBasedFileNamingAndTriggeringPolicy class = "ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP" >

                 < maxFileSize >${FILESIZE}</ maxFileSize >

             </ timeBasedFileNamingAndTriggeringPolicy >

         </ rollingPolicy >

     </ appender >

     <!-- Logger 根目录 -->

     < root level = "INFO" >

         < appender-ref ref = "STDOUT" />

         <!--<appender-ref ref="ERROR-OUT"/>-->

         <!--<appender-ref ref="WARN-OUT"/>-->

         <!--<appender-ref ref="INFO-OUT"/>-->

         <!--<appender-ref ref="TRACE-OUT"/>-->

         <!--<appender-ref ref="REVIEWERROR-OUT"/>-->

         <!--<appender-ref ref="PAYDEBUG-OUT"/>-->

         <!--<appender-ref ref="PAYERROR-OUT"/>-->

         <!--<appender-ref ref="USERERROR-OUT"/>-->

         <!--<appender-ref ref="TRAINERROR-OUT"/>-->

     </ root >

     < logger name = "com.xxx" additivity = "false" level = "DEBUG" >

         < appender-ref ref = "DEBUG-OUT" />

     </ logger >

     < logger name = "com.xxx" additivity = "false" level = "ERROR" >

         < appender-ref ref = "ERROR-OUT" />

     </ logger >

     < logger name = "com.xxx" additivity = "false" level = "INFO" >

         < appender-ref ref = "INFO-OUT" />

     </ logger >

     < logger name = "com.xxx" additivity = "false" level = "TRACE" >

         < appender-ref ref = "TRACE-OUT" />

     </ logger >

     < logger name = "com.xxx" level = "STDOUT" >

         < appender-ref ref = "STDOUT" />

         < appender-ref ref = "ERROR-OUT" />

         < appender-ref ref = "WARN-OUT" />

         < appender-ref ref = "INFO-OUT" />

         < appender-ref ref = "TRACE-OUT" />

         < appender-ref ref = "REVIEWERROR-OUT" />

         < appender-ref ref = "DEBUG-OUT" />

         <!--<appender-ref ref="PAYDEBUG-OUT"/>-->

         < appender-ref ref = "PAYERROR-OUT" />

         < appender-ref ref = "USERERROR-OUT" />

         < appender-ref ref = "TRAINERROR-OUT" />

     </ logger >

     <!-- 不同的业务逻辑日志打印到指定文件夹-->

     < logger name = "trainError" level = "ERROR" >

         < appender-ref ref = "TRAINERROR-OUT" />

     </ logger >

     < logger name = "userError" level = "ERROR" >

         < appender-ref ref = "USERERROR-OUT" />

     </ logger >

     < logger name = "payError" level = "ERROR" >

         < appender-ref ref = "PAYERROR-OUT" />

     </ logger >

     < logger name = "payDebug" additivity = "false" level = "DEBUG" >

         < appender-ref ref = "PAYDEBUG-OUT" />

     </ logger >

     < logger name = "reviewError" level = "ERROR" >

         < appender-ref ref = "REVIEWERROR-OUT" />

     </ logger >

     < logger name = "systemError" level = "ERROR" >

         < appender-ref ref = "ERROR-OUT" />

     </ logger >

</ configuration >

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。

原文链接:https://HdhCmsTestjianshu测试数据/p/6956ac6fdea9

查看更多关于使用logback实现按自己的需求打印日志到自定义的文件里的详细内容...

  阅读:30次