Ubuntu 16.04升20.04后启动Unifi控制器报InMemoryAppender错误
Ubuntu升级后Unifi InMemoryAppender报错解决方法
问题根因
系统升级到Ubuntu 20.04后,Unifi同步升级过程没有覆盖旧版本留存的log4j2配置文件。新版Unifi已经彻底移除了自带的InMemoryAppender自定义日志类,旧配置强行引用不存在的类,就会触发CLASS_NOT_FOUND的启动报错。
分步操作
- 定位Unifi目录下的log4j配置文件
执行命令扫描对应路径:
常规默认路径为find /usr/lib/unifi -name "log4j2.xml"/usr/lib/unifi/data/log4j2.xml。 - 按自身配置场景做对应处理:
- 无自定义日志配置的场景
直接将旧配置重命名备份,让Unifi启动时自动生成适配当前版本的全新配置:mv /usr/lib/unifi/data/log4j2.xml /usr/lib/unifi/data/log4j2.xml.old - 有自定义日志规则的场景
手动打开定位到的log4j2.xml文件,完成两处修改:- 删除
<Appenders>节点下所有InMemoryAppender相关的定义行 - 删除
<Loggers>节点下,所有关联引用ref="InMemoryAppender"的配置行
- 删除
- 无自定义日志配置的场景
- 完成修改后重启Unifi服务:
执行systemctl restart unifisystemctl status unifi确认服务运行状态正常即可。
兜底排查操作
如果重启后仍报同类错误,先备份Unifi核心数据目录(/var/lib/unifi、/etc/unifi),重新安装适配Ubuntu 20.04的对应版本Unifi安装包,即可解决残留jar包类路径不匹配的问题。
内容的提问来源于stack exchange,提问作者user3074753
相关产品推荐
相关产品推荐

