无法使用 Log4j2.properties 添加滚动文件附加程序

时间:2021-04-16 12:35:46

标签: log4j2 appender

我有一个在 docker 容器中运行的 Java 应用程序。我无法更改程序,但可以更改 log4j2.properties 文件。我想添加一个滚动文件附加程序,但是当我这样做时,我收到此错误:

ERROR An exception occurred processing Appender file_appender java.security.AccessControlException: access denied ("java.io.FilePermission" "shared_logs" "read")

然后我给了我的 shared_logs 文件夹的所有权限

chmod 777 shared_logs

但是错误仍然存​​在。 这就是我添加附加程序的方式:

appender.fa.type = RollingFile
appender.fa.name = file_appender
appender.fa.fileName = shared_logs/elastic.log
appender.fa.filePattern = shared_logs/elastic-%d{yyyy-dd-MM}-%i.log.gz
appender.fa.layout.type = PatternLayout
appender.fa.layout.pattern = [%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n
appender.fa.policies.type = Policies
appender.fa.policies.time.type = TimeBasedTriggeringPolicy
appender.fa.policies.size.type = SizeBasedTriggeringPolicy
appender.fa.policies.size.size = 500
appender.fa.strategy.type = DefaultRolloverStrategy
appender.fa.strategy.max = 5

“fa”代表文件附加器

1 个答案:

答案 0 :(得分:0)

好吧,您显然仍然存在权限问题。您的 fileName 是一个相对文件,因此创建它的位置将基于您的应用程序的当前目录。这通常是您的应用程序所在的目录或根目录。如果它是根目录并且您希望它在您的应用程序中,这将解释问题。如果您将 -Dlog4j2.debug 添加到启动选项,您将看到 Log4j 尝试创建文件的位置。

在 Docker 容器中写入日志文件通常也不是最佳实践。如果您还没有,我建议您查看 Log4j 网站上的 Logging in the Cloud

相关问题