编程文汇

logback的bug引起的事故

早上发现自己的网站挂了, ssh登上服务器, 发现是无法进行域名解析 , 这就奇怪了, 明明服务器没有修改任何配置, 怎么会无法进行域名解析?

查看 /etc/resolv.conf , 是空文件! 这个文件怎么会是空的呢?

此时 无意中看到系统监控中 有个磁盘满了, 仔细看看 竟然是系统盘!! 毫无疑问, 肯定是日志写满了. 看了看, 日志竟然有30多G, 明明设置了日志上限600M, 怎么会这么多??

没办法 先把日志删除, 重启服务器, 暂时恢复.

因为昨晚断网了, 连接不到外网, 就报了很多异常, logback的日志上限没起作用, 日志把盘写满了, 所以在网络恢复时, 系统无法修改resolv.conf , 导致不能解析域名. .

我logback用的是1.2.3 当前最新, 日志格式如下, 本机测试没问题, 服务器上类似的设置 就挂了. 据说这个bug要在1.3版本中解决, 现在1.3才阿尔法4, 我决定换到log4j2.

	<appender name="ROLLING"
		class="ch.qos.logback.core.rolling.RollingFileAppender">
		<file>logs/log.txt</file>
		<rollingPolicy
			class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
			<!-- rollover daily -->
			<fileNamePattern>logs/log-%d{yyyy-MM-dd}.%i.txt</fileNamePattern>
			<!-- 10 log files -->
			<maxFileSize>1MB</maxFileSize>
			<totalSizeCap>10MB</totalSizeCap>
			<maxHistory>10</maxHistory>
		</rollingPolicy>
		<encoder>
			<pattern>${defaultPattern}</pattern>
		</encoder>
	</appender>

log4j2和logback的日志格式(layout)是兼容的, 可以直接复制