解决-临时处理日志级别不生效
在 Ambari 3.0.0 实际运维场景中,日志输出级别不生效,全部写入 ambari-server.out,既影响日常排查效率,也造成了日志归档混乱。 此问题的临时修复方法,不需重启服务、也无需重新编译 jar 包,只需添加一份合适的 logback.xml 配置即可高效解决。
# 操作步骤
# 1. 配置文件位置
将下面的 logback.xml 文件直接放到 /etc/ambari-server/conf/ 目录下,和 log4j.properties 平级。实际放置效果如下:
# 2. 推荐 logback.xml 配置模板
以下 logback.xml 可直接套用,已按生产要求细分多种日志文件和归档策略。实际使用时可根据具体场景进一步裁剪或扩展。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 日志路径变量 -->
<property name="AMBARI_LOG_DIR" value="/var/log/ambari-server"/>
<property name="AMBARI_LOG_FILE" value="${AMBARI_LOG_DIR}/ambari-server.log"/>
<property name="CONFIG_CHANGES_FILE" value="${AMBARI_LOG_DIR}/ambari-config-changes.log"/>
<property name="ALERTS_FILE" value="${AMBARI_LOG_DIR}/ambari-alerts.log"/>
<property name="ECLIPSELINK_FILE" value="${AMBARI_LOG_DIR}/ambari-eclipselink.log"/>
<property name="AUDIT_FILE" value="${AMBARI_LOG_DIR}/ambari-audit.log"/>
<property name="DBCHECK_FILE" value="${AMBARI_LOG_DIR}/ambari-server-check-database.log"/>
<!-- 主日志文件:每天一个文件,保留60天 -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${AMBARI_LOG_FILE}</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${AMBARI_LOG_FILE}.%d{yyyy-MM-dd}.gz</fileNamePattern>
<maxHistory>60</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%date{ISO8601} %-5level [%thread] %logger{36}:%line - %msg%n</pattern>
</encoder>
</appender>
<!-- 配置变更日志:每天一个文件,保留30天 -->
<appender name="CONFIGCHANGE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${CONFIG_CHANGES_FILE}</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${CONFIG_CHANGES_FILE}.%d{yyyy-MM-dd}.gz</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%date{ISO8601} %-5level - %msg%n</pattern>
</encoder>
</appender>
<!-- 告警日志:每天一个文件,保留30天 -->
<appender name="ALERTS" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${ALERTS_FILE}</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${ALERTS_FILE}.%d{yyyy-MM-dd}.gz</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%date{ISO8601} %msg%n</pattern>
</encoder>
</appender>
<!-- 数据库检查日志:每天一个文件,保留30天 -->
<appender name="DBCHECK" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${DBCHECK_FILE}</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${DBCHECK_FILE}.%d{yyyy-MM-dd}.gz</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%date{ISO8601} %-5level - %msg%n</pattern>
</encoder>
</appender>
<!-- EclipseLink 日志:每天一个文件,保留10天 -->
<appender name="ECLIPSELINK" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${ECLIPSELINK_FILE}</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${ECLIPSELINK_FILE}.%d{yyyy-MM-dd}.gz</fileNamePattern>
<maxHistory>10</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%msg%n</pattern>
</encoder>
</appender>
<!-- 审计日志:每天一个文件,保留13天 -->
<appender name="AUDIT" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${AUDIT_FILE}</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${AUDIT_FILE}.%d{yyyy-MM-dd}.gz</fileNamePattern>
<maxHistory>13</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%msg%n</pattern>
</encoder>
</appender>
<!-- 主日志级别,默认只保留INFO及以上 -->
<root level="INFO">
<appender-ref ref="FILE"/>
</root>
<!-- 特殊分类日志分别单独输出 -->
<logger name="configchange" level="INFO" additivity="false">
<appender-ref ref="CONFIGCHANGE"/>
</logger>
<logger name="alerts" level="INFO" additivity="false">
<appender-ref ref="ALERTS"/>
</logger>
<logger name="org.apache.ambari.server.checks.DatabaseConsistencyChecker" level="INFO" additivity="false">
<appender-ref ref="DBCHECK"/>
</logger>
<logger name="org.apache.ambari.server.checks.DatabaseConsistencyCheckHelper" level="INFO" additivity="false">
<appender-ref ref="DBCHECK"/>
</logger>
<logger name="eclipselink" level="INFO" additivity="false">
<appender-ref ref="ECLIPSELINK"/>
</logger>
<logger name="audit" level="INFO" additivity="false">
<appender-ref ref="AUDIT"/>
</logger>
<!-- Jetty、Jersey 相关日志只输出 WARN 及以上 -->
<logger name="org.eclipse.jetty" level="WARN"/>
<logger name="com.sun.jersey" level="WARN"/>
<logger name="org.glassfish.jersey" level="WARN"/>
<logger name="org.apache.hadoop.yarn.client" level="WARN"/>
<logger name="org.apache.ambari.server.security.authorization" level="WARN"/>
<logger name="org.apache.ambari.server.security.authorization.AuthorizationHelper" level="INFO"/>
<logger name="org.apache.ambari.server.security.authorization.AmbariLdapBindAuthenticator" level="INFO"/>
<!-- 如需调试,可把上面level设为DEBUG,但生产建议INFO/WARN -->
<logger name="org.apache.ambari.server" level="INFO" additivity="true">
<appender-ref ref="FILE"/>
</logger>
</configuration>
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
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
注意
需重启服务才可以生效!!!
- 01
- bigtop-select 打包缺 compat 报错修复 deb07-16
- 02
- bigtop-select 打包缺 control 文件报错修复 deb07-16
- 03
- 首次编译-环境初始化 必装07-16