Les autorisations sur les fichiers journaux créés par log4j RollingFileAppender
Comment sont les autorisations pour les fichiers créés par RollingFileAppender
déterminé?
J'ai récemment changé d'un processus démon que j'ai à exécuter en tant qu'utilisateur non-root et les fichiers sont maintenant en cours de création avec des autorisations de 0600
(uniquement lisible par le propriétaire), mais j'aimerais qu'ils soient lisibles par tous, ou au moins des membres d'un groupe d'admin (0644
ou 0640
). Les fichiers créés par mon tomcat apps sont toujours 0644
(lisible par tous).
Je ne sais pas si par hasard, j'ai changé quelque chose ou si c'est quelque chose à voir avec les autorisations de l'utilisateur. J'ai fait le répertoire parent 0777
comme un test et il ne semble pas aider (il a été 0755
). Évidemment pas un gros problème puisque je ne peux sudo
à les regarder, mais plutôt ennuyeux et il ne sera pas un problème si je dois avoir une copie pour moi.
Environnement est Ubuntu 10.04 LTS à l'aide de jsvc/commons-daemon
pour exécuter le démon. Dans le cas où il importe ici est la base sur mon log4j
config:
<!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>
....
OriginalL'auteur Ken Waln | 2011-10-25
Vous devez vous connecter pour publier un commentaire.
Autorisations de fichier sont déterminés par l'utilisateur umask - il n'y a pas un moyen de le changer dans log4j.
Vous voulez probablement pour définir l'utilisateur du umask à
0117
Cette réponse est plus précise. Log4j 2.9.0 ajout d'un moyen de configurer ce sans changer le paramètre umask.
OriginalL'auteur Brian Roach
Log4J-core 2.9 fournir cette fonctionnalité fileOwner, groupe de fichiers et filePermissions pour posix OS dans FileAppender, RollingFileAppender et RollingRandomAccessFileManager:
OriginalL'auteur Pierrick HYMBERT
Je réalise que c'est une vieille question, mais depuis qu'elle a été la première frappe toujours quand j'ai cherché pour ce problème...
Vous pouvez simplement sous-classe
RollingFileAppender
et définir les autorisations sur le fichier lorsqu'il est ouvert pour la première fois, comme ceci:Puis il suffit de référence
WorldWritableFileAppender
au lieu deRollingFileAppender
dans votrelog4j.xml
.Cela fonctionne parce que
setFile()
est appelé à la fois d'origine au moment de la configuration de l'enregistreur, et lors de la création d'un nouveau fichier de roulement. L'ancien fichier est déplacé de côté avecFile.renameTo()
, qui préserve les autorisations.OriginalL'auteur Russell Zahniser
à l'intérieur de log4j.les propriétés comprennent ceci:
log4j.appender.file.File=${user.home}/log
de toute façon, c'est ma configuration afficher les infos dans la console et un fichier "log".
OriginalL'auteur Pichitron