好得很程序员自学网

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

完整的logback配置示例ELK整合包含生成json日志

一、依赖

由于配置中使用了json格式的日志输出,所以需要引入如下依赖

?

1

"net.logstash.logback:logstash-logback-encoder:4.11",

二、配置说明

1.日志的输出路径

?

1

< property name = "LOG_PATH" value = "phantom-log" />

2.读取spring容器中的属性,这里是获取项目名称和运行的服务器IP

?

1

2

< springProperty scope = "context" name = "appName" source = "spring.application.name" />

< springProperty scope = "context" name = "ip" source = "spring.cloud.client.ipAddress" />

3.设置日志的格式

?

1

2

< property name = "CONSOLE_LOG_PATTERN"

             value = "[%d{yyyy-MM-dd HH:mm:ss.SSS} ${ip} ${appName} %highlight(%-5level) %yellow(%X{X-B3-TraceId}),%green(%X{X-B3-SpanId}),%blue(%X{X-B3-ParentSpanId}) %yellow(%thread) %green(%logger) %msg%n" />

4.添加一个输出器,并滚动输出

?

1

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

5.指定输出的文件位置

?

1

< file >${LOG_PATH}/${appName}/${appName}-error.log</ file >

6.指定滚动输出的策略,按天数进行切分,或者文件大小超过2M进行切分

?

1

2

3

4

5

6

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

       < fileNamePattern >${LOG_PATH}/${appName}/${appName}-error-%d{yyyy-MM-dd}.%i.log</ fileNamePattern >

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

         < maxFileSize >2MB</ maxFileSize >

       </ timeBasedFileNamingAndTriggeringPolicy >

     </ rollingPolicy >

7.下面的文件中一共有四个appender, FILEERROR, FILEEWARN, FILEINFO, logstash。

其中FILEERROR, FILEEWARN, FILEINFO三个是相类似的,只是打印不同级别的日志信息。
logstash是用来生成json格式的日志文件,方便与ELK日志系统进行集成。

三、完整配置

?

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

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

< configuration >

   < contextName >${HOSTNAME}</ contextName >

   < property name = "LOG_PATH" value = "phantom-log" />

   < springProperty scope = "context" name = "appName" source = "spring.application.name" />

   < springProperty scope = "context" name = "ip" source = "spring.cloud.client.ipAddress" />

   < property name = "CONSOLE_LOG_PATTERN"

             value = "[%d{yyyy-MM-dd HH:mm:ss.SSS} ${ip} ${appName} %highlight(%-5level) %yellow(%X{X-B3-TraceId}),%green(%X{X-B3-SpanId}),%blue(%X{X-B3-ParentSpanId}) %yellow(%thread) %green(%logger) %msg%n" />

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

     < file >${LOG_PATH}/${appName}/${appName}-error.log</ file >

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

       < fileNamePattern >${LOG_PATH}/${appName}/${appName}-error-%d{yyyy-MM-dd}.%i.log</ fileNamePattern >

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

         < maxFileSize >2MB</ maxFileSize >

       </ timeBasedFileNamingAndTriggeringPolicy >

     </ rollingPolicy >

     < append >true</ append >

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

       < pattern >${CONSOLE_LOG_PATTERN}</ pattern >

       < charset >utf-8</ charset >

     </ encoder >

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

       < level >error</ level >

       < onMatch >ACCEPT</ onMatch >

       < onMismatch >DENY</ onMismatch >

     </ filter >

   </ appender >

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

     < file >${LOG_PATH}/${appName}/${appName}-warn.log</ file >

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

       < fileNamePattern >${LOG_PATH}/${appName}/${appName}-warn-%d{yyyy-MM-dd}.%i.log</ fileNamePattern >

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

         < maxFileSize >2MB</ maxFileSize >

       </ timeBasedFileNamingAndTriggeringPolicy >

     </ rollingPolicy >

     < append >true</ append >

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

       < pattern >${CONSOLE_LOG_PATTERN}</ pattern >

       < charset >utf-8</ charset >

     </ encoder >

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

       < level >warn</ level >

       < onMatch >ACCEPT</ onMatch >

       < onMismatch >DENY</ onMismatch >

     </ filter >

   </ appender >

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

     < file >${LOG_PATH}/${appName}/${appName}-info.log</ file >

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

       < fileNamePattern >${LOG_PATH}/${appName}/${appName}-info-%d{yyyy-MM-dd}.%i.log</ fileNamePattern >

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

         < maxFileSize >2MB</ maxFileSize >

       </ timeBasedFileNamingAndTriggeringPolicy >

     </ rollingPolicy >

     < append >true</ append >

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

       < pattern >${CONSOLE_LOG_PATTERN}</ pattern >

       < charset >utf-8</ charset >

     </ encoder >

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

       < level >info</ level >

       < onMatch >ACCEPT</ onMatch >

       < onMismatch >DENY</ onMismatch >

     </ filter >

   </ appender >

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

     < file >${LOG_PATH}/${appName}/${appName}.json</ file >

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

       < fileNamePattern >${LOG_PATH}/${appName}/${appName}-%d{yyyy-MM-dd}.json</ fileNamePattern >

       < maxHistory >7</ maxHistory >

     </ rollingPolicy >

     < encoder class = "net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder" >

       < providers >

         < timestamp >

           < timeZone >UTC</ timeZone >

         </ timestamp >

         < pattern >

           < pattern >

             {

             "ip": "${ip}",

             "app": "${appName}",

             "level": "%level",

             "trace": "%X{X-B3-TraceId:-}",

             "span": "%X{X-B3-SpanId:-}",

             "parent": "%X{X-B3-ParentSpanId:-}",

             "thread": "%thread",

             "class": "%logger{40}",

             "message": "%message",

             "stack_trace": "%exception{10}"

             }

           </ pattern >

         </ pattern >

       </ providers >

     </ encoder >

   </ appender >

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

     < encoder >

       < pattern >${CONSOLE_LOG_PATTERN}</ pattern >

       < charset >utf-8</ charset >

     </ encoder >

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

       < level >debug</ level >

     </ filter >

   </ appender >

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

   < logger name = "org.hibernate" level = "INFO" />

   < logger name = "com.kingboy.repository" level = "DEBUG" />

   < root level = "INFO" >

     < appender-ref ref = "FILEERROR" />

     < appender-ref ref = "FILEWARN" />

     < appender-ref ref = "FILEINFO" />

     < appender-ref ref = "logstash" />

     < appender-ref ref = "STDOUT" />

   </ root >

</ configuration >

以上就是完整的logback配置示例ELK整合包含生成json日志的详细内容,更多关于ogback配置ELK整合生成json日志示例的资料请关注其它相关文章!

原文链接:https://kimzing.blog.csdn.net/article/details/78917865

查看更多关于完整的logback配置示例ELK整合包含生成json日志的详细内容...

  阅读:70次