如何确定RollingFileAppender
创建的文件的权限?
我最近更改了一个守护进程,我必须以非root用户的身份运行,并且现在正在使用0600
(仅所有者可读)的权限创建文件,但我希望它们能够被所有或至少管理组(0644
或0640
)的成员读取。我的tomcat应用程序创建的文件总是0644
(所有人都可读)。
我不知道我是否无意中改变了其他东西,或者它是否与该用户的权限有关。我把父目录0777
作为测试,它似乎没有帮助(它是0755
)。显然不是一个大问题,因为我可以sudo
看他们,但相当烦人,这将是一个问题,如果我有一个客户为我复制他们。
环境是Ubuntu 10.04LTS,使用jsvc/commons-daemon
运行守护程序。如果有关系,这里是我的log4j
配置的基础知识:
<!DOCTYPE log4j:configuration SYSTEM 'log4j.dtd'>
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="true">
<appender name="StdOutAppender" class="org.apache.log4j.ConsoleAppender">
<!-- only send error / fatal messages to console (catalina.out) -->
<param name="threshold" value="${log4j.StdOutAppender.threshold}" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%5p %d{ISO8601} [%t][%x] %c - %m%n" />
<!--%d{dd-MMM-yyyy HH:mm:ss.SSS} [%5p] %c{2}.%M [line:%L]: %m%n-->
</layout>
</appender>
<appender name="TimeBasedRollingFileAppender" class="org.apache.log4j.rolling.RollingFileAppender">
<param name="append" value="true" />
<param name="encoding" value="UTF-8" />
<param name="threshold" value="${log4j.TimeBasedRollingFileAppender.threshold}" />
<rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy">
<param name="FileNamePattern" value="${cloud.daemon.log4j.file.config.path}.%d.gz" />
</rollingPolicy>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%5p %d{ISO8601} [%t][%x] %c - %m%n" />
<!--%d{dd-MMM-yyyy HH:mm:ss.SSS} [%5p] %c{2}.%M [line:%L]: %m%n-->
</layout>
</appender>
....
5条答案
按热度按时间bzzcjhmw1#
文件权限是由用户的umask决定的--没有办法在log4j本身中更改它。
您可能希望将用户的umask设置为
0117
tgabmvqs2#
Log4J-core-2.9将为posix OS在 * FileManager 、 RollingFileManager * 和 * RollingRandomFileManager * 中提供此featurefileOwner、*fileGroup * 和 * fileManager *:
cnh2zyt33#
我知道这是一个老问题,但因为它是第一次击中仍然当我搜索这个问题.
您可以简单地子类化
RollingFileAppender
,并在首次打开文件时设置文件的权限,如下所示:然后在
log4j.xml
中引用WorldWritableFileAppender
而不是RollingFileAppender
。这是因为
setFile()
在最初设置日志记录器时以及在翻转后创建新文件时都会被调用。旧文件通过File.renameTo()
移到一边,这将保留权限。wi3ka0sx4#
在www.example.com中log4j.properties包括:
log4j.appender.file.File=${user.home}/log
无论如何,这是我的配置,显示信息在控制台和文件“日志”。pobjuy325#
将此添加到您的pom文件: