tomcat程序生成的日志文件权限640
现象描述:
为了方便开发人员登录查看日志,日志文件的文件权限为"644",同时也是系统默认的umask。
但是,tomcat 新生成的日志文件权限全都是640,开发使用其他用户登录后对这些日志文件均不可读!
原因分析一(本人是属于此方式):Tomcat在启动(catalina.sh)时会重新设置UMASK(这个是与tomcat的版本有关系,其中apache-tomcat-7.0.100版本就是这个方式)
Tomcat在启动服务时可能会重新设置UMASK值,其默认值为0027,而操作系统的默认值0022,两者不一样。解决办法:需要到catalina.sh脚本里修改UMASK值:
如上,将catalina.sh脚本中的"UMASK"的值由"0027"改为"0022",即改成系统当前用户的umask即可!
原因分析二(未遭遇过,MARK):log4j2设置日志文件读写权限(filePermissions)
由于日志比较大,并且实时输出,需要每天做日志轮询,如果日志轮询的过程是通过log4j插件自动切割完成的,则可能会由lig4j2的filePermissions设置引起日志文件不可读现象。log4j2在2.9版本以上有一个filePermissions,可以指定文件权限。
spring-boot使用log4j2作为日志插件的时候需要设置日志文件的读写权限,可以File 上增加filePermissions,如:
<File name=
"File"
fileName=
"logs/catalina.log"
filePermissions=
"rw-r--rw-"
>
<PatternLayout pattern=
"%m%n"
/>
<
/File
>
需要注意的是,spring-boot version1.5.7.release的spring-boot-starter-log4j2中引用的log4j2的版本是2.7,而filePermissions只有在2.9以上的版本才有,所以需要在pom.xml中添加2.9的依赖
<dependency>
<groupId>org.apache.logging.log4j<
/groupId
>
<artifactId>log4j-slf4j-impl<
/artifactId
>
<version>2.9.1<
/version
>
<
/dependency
>
<dependency>
<groupId>org.apache.logging.log4j<
/groupId
>
<artifactId>log4j-api<
/artifactId
>
<version>2.9.1<
/version
>
<
/dependency
>
<dependency>
<groupId>org.apache.logging.log4j<
/groupId
>
<artifactId>log4j-core<
/artifactId
>
<version>2.9.1<
/version
>
<
/dependency
>