好得很程序员自学网

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

maven如何使用slf4j输出日志到文件

使用slf4j输出日志到文件

log4j.properties

?

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

### set log levels ###

log4j.rootLogger=debug, stdout, D, E

#ConsoleAppender,控制台输出

#FileAppender,文件日志输出

#SMTPAppender,发邮件输出日志

#SocketAppender,Socket 日志

#NTEventLogAppender,Window NT 日志

#SyslogAppender,

#JMSAppender,

#AsyncAppender,

#NullAppender

#文件输出:RollingFileAppender

#log4j.rootLogger = INFO,logfile

### 输出到控制台 ###

log4j.appender.stdout=org.apache.log4j.ConsoleAppender

log4j.appender.stdout.Target=System.out

### 布局格式,可以灵活指定

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

### 消息格式化

log4j.appender.stdout.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss:SSSS} %m%n

### 输出到日志文件 ###

log4j.appender.D=org.apache.log4j.RollingFileAppender

log4j.appender.D.File=logs/log.log

log4j.appender.D.Append= true

log4j.appender.D.Threshold=DEBUG

log4j.appender.D.layout=org.apache.log4j.PatternLayout

log4j.appender.D.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss:SSSS} %m%n

# 一个 log 文件的大小,超过这个大小就又会生成 1 个日志 # KB ,MB,GB

log4j.appender.D.MaxFileSize=5MB

# 最多保存 3 个文件备份

log4j.appender.D.MaxBackupIndex= 5

### 保存异常信息到单独文件 ###

log4j.appender.E=org.apache.log4j.RollingFileAppender

log4j.appender.E.File=logs/error.log

log4j.appender.E.Append= true

log4j.appender.E.Threshold=ERROR

log4j.appender.E.layout=org.apache.log4j.PatternLayout

log4j.appender.E.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss:SSSS} method:%l %m%n

# 一个 log 文件的大小,超过这个大小就又会生成 1 个日志 # KB ,MB,GB

log4j.appender.E.MaxFileSize=5MB

# 最多保存 3 个文件备份

log4j.appender.E.MaxBackupIndex= 5

slf4j将部分日志打印在其他文件中

logback.xml配置中新增一个FileAppender

并定义输出格式和路径

?

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

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

< configuration >

    < property name = "log.base" value = "/logs" />

    < property name = "log.moduleName" value = "zhxy-service-order" />   <!-- 模块名称, 影响日志配置名,日志文件名 -->

    < property name = "log.base.order" value = "/logs/orderLog" />

    < property name = "log.max.size" value = "1024MB" /> <!-- 日志文件大小 -->

 

    <!-- 彩色日志 -->

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

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

 

    <!-- Console 输出设置 -->

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

        < encoder charset = "UTF-8" >

            <!-- <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>-->

            < pattern >${CONSOLE_LOG_PATTERN}</ pattern >

        </ encoder >

    </ appender >

 

    <!-- Info日志文件输出 -->

    < appender name = "FileInfoLog" class = "ch.qos.logback.core.rolling.RollingFileAppender" >

        <!--只输出INFO-->

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

            <!--过滤 INFO-->

            < level >DEBUG</ level >

            <!--匹配到就禁止-->

            < onMatch >ACCEPT</ onMatch >

            <!--没有匹配到就允许-->

            < onMismatch >DENY</ onMismatch >

        </ filter >

        <!-- 设置日志不超过${log.max.size}时的保存路径,注意如果 是web项目会保存到Tomcat的bin目录 下 -->

        < File >${log.base}/${log.moduleName}_info.log</ File >

        <!-- 滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件。-->

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

            <!--日志文件输出的文件名-->

            < FileNamePattern >${log.base}/${log.moduleName}_info_%d{yyyy-MM-dd}.%i.log.zip</ FileNamePattern >

            <!-- 当天的日志大小 超过${log.max.size}时,压缩日志并保存 -->

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

                < maxFileSize >${log.max.size}</ maxFileSize >

            </ timeBasedFileNamingAndTriggeringPolicy >

        </ rollingPolicy >

        <!--日志输出的文件的格式 -->

        < encoder class = "ch.qos.logback.classic.encoder.PatternLayoutEncoder" >

            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->

            < pattern >%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread]%logger{56}.%method\(\):%L -%msg%n</ pattern >

            < charset >UTF-8</ charset >

        </ encoder >

    </ appender >

 

    <!--Error日志文件输出-->

    < appender name = "FileErrorLog"   class = "ch.qos.logback.core.rolling.RollingFileAppender" >

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

            <!--设置日志级别,过滤掉info日志,只输入error日志-->

            < level >ERROR</ level >

        </ filter >

        <!-- 设置日志不超过${log.max.size}时的保存路径,注意如果 是web项目会保存到Tomcat的bin目录 下 -->

        < File >${log.base}/${log.moduleName}_error.log</ File >

        <!-- 滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件。-->

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

            <!--日志文件输出的文件名-->

            < FileNamePattern >${log.base}/${log.moduleName}_error_%d{yyyy-MM-dd}.%i.log.zip</ FileNamePattern >

            <!-- 当天的日志大小 超过${log.max.size}时,压缩日志并保存 -->

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

                < maxFileSize >${log.max.size}</ maxFileSize >

            </ timeBasedFileNamingAndTriggeringPolicy >

        </ rollingPolicy >

        <!--日志输出的文件的格式 -->

        < encoder class = "ch.qos.logback.classic.encoder.PatternLayoutEncoder" >

            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->

            < pattern >%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread]%logger{56}.%method\(\):%L -%msg%n</ pattern >

            < charset >UTF-8</ charset >

        </ encoder >

    </ appender >

 

    <!-- Info日志文件输出 -->

    < appender name = "OrderLog" class = "ch.qos.logback.core.rolling.RollingFileAppender" >

        <!--只输出INFO-->

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

            <!--过滤 INFO-->

            < level >DEBUG</ level >

        </ filter >

        <!-- 设置日志不超过${log.max.size}时的保存路径,注意如果 是web项目会保存到Tomcat的bin目录 下 -->

        < File >${log.base.order}/${log.moduleName}_info.log</ File >

        <!-- 滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件。-->

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

            <!--日志文件输出的文件名-->

            < FileNamePattern >${log.base.order}/${log.moduleName}_info_%d{yyyy-MM-dd}.%i.log.zip</ FileNamePattern >

            <!-- 当天的日志大小 超过${log.max.size}时,压缩日志并保存 -->

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

                < maxFileSize >${log.max.size}</ maxFileSize >

            </ timeBasedFileNamingAndTriggeringPolicy >

        </ rollingPolicy >

        <!--日志输出的文件的格式 -->

        < encoder class = "ch.qos.logback.classic.encoder.PatternLayoutEncoder" >

            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->

            < pattern >%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread]%logger{56}.%method\(\):%L -%msg%n</ pattern >

            < charset >UTF-8</ charset >

        </ encoder >

    </ appender >

 

    <!--日志等级设置-->

    < logger name = "org.springframework" level = "error" ></ logger >

    < root level = "info" >

        < appender-ref ref = "ConsoleLog" />

    </ root >

 

    <!-- 为某个包下的所有类的指定Appender 这里也可以指定类名称例如:com.aa.bb.ClassName -->

    < logger name = "com.company"   level = "debug" >

        < appender-ref ref = "FileInfoLog" />

        < appender-ref ref = "FileErrorLog" />

    </ logger >

 

    < logger name = "order" level = "debug" >

        < appender-ref ref = "OrderLog" />

    </ logger >

</ configuration >

在需要额外打印日志的地方

?

1

2

Logger orderLog = LoggerFactory.getLogger( "order" );

orderLog.info( "singleOrder params: {}" ,params);

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

原文链接:https://blog.csdn.net/qq_39898191/article/details/121620834

查看更多关于maven如何使用slf4j输出日志到文件的详细内容...

  阅读:14次