log4j RollingFileAppender 创建的日志文件的权限

如何确定创建的文件的权限?RollingFileAppender

我最近更改了一个守护进程,我必须以非root用户身份运行,并且现在正在创建具有权限的文件(仅由所有者读取),但我希望它们可以被管理员组(或)的所有或至少成员读取。由我的tomcat应用程序创建的文件始终是(所有人都可读)。0600064406400644

我不知道我是否无意中更改了其他内容,或者它是否与该用户的权限有关。我把父目录作为测试,它似乎没有帮助(它是)。显然没什么大不了的,因为我可以看它们,但相当烦人,如果我必须让客户为我复制它们,那将是一个问题。07770755sudo

环境是 Ubuntu 10.04LTS 用来运行守护进程。如果这很重要,这是我的配置上的基础知识:jsvc/commons-daemonlog4j

<!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>
....

答案 1

文件权限由用户的掩码决定 - 没有办法在log4j本身中更改它。

您可能希望将用户的掩码设置为0117

$ umask -S 0117
u=rw,g=rw,o=

答案 2

Log4J-core-2.9 将为 FileAppenderRollingFileAppenderRollingRandomAccessFileManager 中的 posix OS 提供此功能 fileOwnerfileGroup 和 filePermissions:

<RollingFile name="RollingFile"
             fileName="mylogs.log"
             filePattern="mylogs-$${date:MM-dd-yyyy}-%i.log.7z"
             fileOwner="log4j"
             fileGroup="log4grp"
             filePermissions="rw-r-----">

推荐