解决-源码级处理日志不生效
在实际大数据平台交付和维护中,推荐彻底根治日志输出问题,将 logback 日志体系直接纳入自定义编译流程。这种方式不仅适配所有新部署,还能避免后续升级补丁遗漏,是企业级场景中最“可靠”的做法。
# 步骤一:logback.xml 集成源码
首先,找到 Ambari 源码包的配置文件目录。 通常 logback.xml 应放置在如下路径:
ambari-server/conf/unix/logback.xml
1
将完整的 logback.xml 拷贝到该目录下内容在文章底部。
提示
这样处理后,每次重新编译、打包或升级 Ambari 时,都能确保新节点自动带上最新日志配置,无需人工额外操作。
# 步骤二:修改 Assembly 聚合文件
接下来,需要让 logback.xml 能随 rpm 包下发到生产节点。这就要修改 assembly 配置,让文件自动聚合进 rpm。
源码路径:
ambari-server/src/main/assemblies/server.xml
1
找到 server.xml 后,在 <file>
标签组内,在 log4j.properties 下方追加 logback.xml 文件聚合规则:
追加内容如下:
<file>
<fileMode>755</fileMode>
<!--增加logback日志-->
<source>conf/unix/logback.xml</source>
<outputDirectory>/etc/ambari-server/conf</outputDirectory>
</file>
1
2
3
4
5
6
7
2
3
4
5
6
7
这样打包时,logback.xml 会和 log4j.properties 一起自动分发关键
到目标节点的 /etc/ambari-server/conf
目录,无需额外手动拷贝。
# 推荐 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
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
- 01
- bigtop-select 打包缺 compat 报错修复 deb07-16
- 02
- bigtop-select 打包缺 control 文件报错修复 deb07-16
- 03
- 首次编译-环境初始化 必装07-16