docker - 调整独立 Neo4j 服务器的日志记录
问题描述
在运行 Neo4j 独立社区 Docker 时,一些日志被写入标准输出,一些被写入容器内的文件:debug.log。
我希望能够设置 log4j 选项,如日志级别、附加程序等。原因是:
- 在例如 AWS ECS 中运行时,我无法访问日志文件
- 调试日志非常冗长
- log4j-properties 便于部署和管理
所以问题是,如何为在容器内运行的 Neo4j 服务器设置自定义 log4j 属性?
如果可能的话,它没有记录在案,但我已经尝试了通常的事情。首先将 a 添加log4j.xml
到类路径但无济于事。我也尝试设置dbms.jvm.additional
为
-Dlog4j.configuration=<path_to_file>
-Dlog4j.configurationFile=<path_to_file>
-Dlog4j2.configurationFile==<path_to_file>
我已验证 Neo4j 进程具有正确的 jvm 参数:
/usr/local/openjdk-11/bin/java -cp /var/lib/neo4j/plugins:/var/lib/neo4j/conf:/var/lib/neo4j/lib/*:/var/lib/neo4j/plugins/*
-Xms2048m -Xmx2048m -XX:+UseG1GC -XX:-OmitStackTraceInFastThrow -XX:+AlwaysPreTouch
-XX:+UnlockExperimentalVMOptions -XX:+TrustFinalNonStaticFields -XX:+DisableExplicitGC
-XX:MaxInlineLevel=15 -XX:-UseBiasedLocking -Djdk.nio.maxCachedBufferSize=262144
-Dio.netty.tryReflectionSetAccessible=true -Djdk.tls.ephemeralDHKeySize=2048
-Djdk.tls.rejectClientInitiatedRenegotiation=true -XX:FlightRecorderOptions=stackdepth=256
-XX:+UnlockDiagnosticVMOptions -XX:+DebugNonSafepoints -Dlog4j2.disable.jmx=true
-Dlog4j.configuration=file:/var/lib/neo4j/conf/log4j.properties
-Dlog4j.configurationFile=file:/var/lib/neo4j/conf/log4j.xml
-Dlog4j2.configurationFile=file:/var/lib/neo4j/conf/log4j2.xml
-Dfile.encoding=UTF-8 org.neo4j.server.CommunityEntryPoint
--home-dir=/var/lib/neo4j --config-dir=/var/lib/neo4j/conf
我已经验证没有 lib-jars 包含优先的 log4j-properties。
无论我尝试什么,都不会对服务器的日志记录方式进行任何更改。相同的事件被写入/logs/debug.log
. 关于错误的 log4j 配置或类似的东西没有例外。
我创建了一个小项目以便于调试。
解决方案
我会将文件写到标准输出。
# forward logs to docker log collector
RUN ln -sf /dev/stdout /logs/debug.log
所以这是一个“码头工人”解决方案,但很方便,也适用于其他用例。
推荐阅读
- sql - 触发器之前的 Mariadb 未更新某些列
- vb.net - 设置访问报告的数据源
- node.js - 写入操作如何在 Firebase RTDB 中工作,即使在云函数超时后也会执行
- python - 如何使用正则表达式从 HTML 源代码中提取 JSON
- python - 如何在python中使用meshgrid函数
- databricks - 无法使用 DataBricks 熔断器安装路径从 DBFS 访问文件
- python - Plotly 条形图上的错误栏阻止的文本
- excel - VBA自定义函数在即时窗口中工作但不在工作表中?引发 #VALUE 错误
- sql - 触发器(在变异表上)更新旧数据
- python-3.x - 从 cli 覆盖默认列表中指定的包