引言:
公司内部小系统原始后台使用java-log4j来写日志,在引入ice后,部署到rhel5(linux redhat 5.4),发现log4j创建不了日志文件(连同目录)。因此纠结了一番。
纠结过程可以在本文“参考”中找到,是官方社区的一篇请教贴。
正文:
项目在WinXP Sp3系统下运行日志灰常正常。Log4j配置文件如下
log4j.appender.logfile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.logfile.File=/opt/demo/logs/demo.log
log4j.appender.logfile.DatePattern=.yyyy-MM-dd
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - <%m>%n
部署到rhel5服务器后,如果手工创建好“./logs”目录,则报“.log (Permission denied)”(无权限);如果连目录也等Log4j自行创建则报“.log (No such file or directory)”(文件或目录不存在)。话说,Log4j本身写日志的时候发现如果没有,会连目录一起创建的,因此始终怀疑icegridnode(应用启动入口)动了log4j的“奶酪”。纠结也从此处开始……
############
1)笔者检查icegridnode的权限,发现运行在root上,妥妥得……
2)编写个用Ice.Logger写日志的,没有log4j嘛,又是妥妥得……
——于是有了参考中的这篇请教贴~。=
3)(此处跳过17个小时 Zzz...)
4)第二天一早,来看,Bernard兄给了回复。经过Bernard兄一挑明,回帖过程中,阅读了文档做了实验,猛然反省过来。问题不是icegridnode没有运行在root上,而是IceBox.Server没有运行在root上,而是nobody上。
5)果断添加用户demo,给个“./logs”所有者权限。配置文件中“<node><icebox>”添加属性“user="cep"”。再跑,目录也出了文件也成了。查看进程中的IceBox.Server,先前的“nobody”已经变成“demo”。妥妥得~~~~~~
############
至此问题终于解决了。另外,linux系统用户管理的考虑跟windows的确大有不同。感叹一下,反省两下。rpm包安装提示找不到用户的问题,大抵与此相似吧。
参考:
Is log4j and Ice.logger conflict ?
最后特别感谢Bernard的热情帮助!
分享到:
相关推荐
赠送jar包:slf4j-log4j12-1.7.25.jar; 赠送原API文档:slf4j-log4j12-1.7.25-javadoc.jar; 赠送源代码:slf4j-log4j12-1.7.25-sources.jar; 赠送Maven依赖信息文件:slf4j-log4j12-1.7.25.pom; 包含翻译后的API...
赠送jar包:slf4j-log4j12-1.6.1.jar; 赠送原API文档:slf4j-log4j12-1.6.1-javadoc.jar; 赠送源代码:slf4j-log4j12-1.6.1-sources.jar; 赠送Maven依赖信息文件:slf4j-log4j12-1.6.1.pom; 包含翻译后的API文档...
赠送jar包:slf4j-log4j12-1.7.21.jar; 赠送原API文档:slf4j-log4j12-1.7.21-javadoc.jar; 赠送源代码:slf4j-log4j12-1.7.21-sources.jar; 赠送Maven依赖信息文件:slf4j-log4j12-1.7.21.pom; 包含翻译后的API...
在使用SLF4J和Log4j12时,你需要注意的一点是,由于Log4j1.2相比Log4j2在某些方面可能较旧,例如性能和功能更新,因此在新项目中,你可能会考虑使用更新的SLF4J绑定器,如slf4j-log4j2,以便利用Log4j2的改进特性。...
slf4j-log4j12-1.7.x版本是SLF4J针对Log4j 1.2版本的绑定器,它使得应用可以使用SLF4J接口,但实际的日志输出通过Log4j进行。这个桥接器让项目能利用SLF4J的灵活性,同时使用Log4j的成熟实现。 在提供的文件名列表...
这个"slf4j-log4j12.jar"文件就是SLF4J与Log4j 1.2桥接器的实现,它使得SLF4J调用能够被Log4j 1.2的日志系统捕获并处理。 1. **SLF4J**:SLF4J的设计目标是为各种日志API提供一个简单统一的接口,这样应用程序就...
这个 JAR 文件包含了 SLF4J API 和 Log4j 的适配器,使得 SLF4J 日志调用能够通过此桥接器被转发到 Log4j 进行处理。`1.5.6` 是这个版本的编号,表示这是 SLF4J 和 Log4j 桥接器的一个特定版本。 在使用 Hibernate...
slf4j-log4j12-1.0.jarslf4j-log4j12-1.0.jarslf4j-log4j12-1.0.jarslf4j-log4j12-1.0.jarslf4j-log4j12-1.0.jarslf4j-log4j12-1.0.jarslf4j-log4j12-1.0.jarslf4j-log4j12-1.0.jarslf4j-log4j12-1.0.jarslf4j-log4...
标题中的"slf4j-log4j12-1.7.12.jar"是SLF4J的一个绑定包,它的作用是将SLF4J API与log4j日志框架连接起来。具体来说,这个版本(1.7.12)的绑定包实现了SLF4J的API,并将其桥接到log4j的实现上,使得开发者可以通过...
SLF4J-log4j12桥接库则是连接SLF4J接口与Log4j实现的桥梁,使得开发者可以使用SLF4J的API,同时利用Log4j进行日志记录。 SLF4J-api-1.5.6.jar是SLF4J API的实现,它包含了一系列的日志记录接口,如`Logger`, `Level...
总之,`slf4j-log4j12-1.7.2.jar`是一个方便的工具,它使得Java应用程序可以利用SLF4J的灵活性,同时使用Log4j 1.2进行日志记录。了解如何正确地集成和使用这个绑定包,对于提升Java项目的日志管理和维护能力至关...
总之,`log4j-1.2.16.jar`、`slf4j-api-1.6.1.jar`和`slf4j-log4j12-1.6.1.jar`的组合提供了强大而灵活的日志解决方案,使得Java开发者能够便捷地调试、监控和优化他们的应用程序,同时保持代码的简洁性和可移植性。...
SLF4J(Simple Logging Facade for Java)与Log4j12的集成包`slf4j-log4j12-1.6.6.jar`是Java开发中常用的日志处理工具,它允许开发者使用SLF4J的API,同时实现在运行时绑定到Log4j 1.2框架。这个版本的jar包包含了`...
该压缩包中包含以下内容: 1、jcl-over-slf4j-1.7.21.jar 2、jcl-over-slf4j-1.7.21-sources.jar 3、jul-to-slf4j-1.7.21.jar 4、jul-to-slf4j-1.7.21-sources.jar 5、log4j-over-slf4j-1.7.21.jar 6、log4j-over-...
slf4j-log4j12-1.7.25,下载直接jar包,测试可用。
5、log4j-over-slf4j-1.7.21.jar 6、log4j-over-slf4j-1.7.21-sources.jar 7、osgi-over-slf4j-1.7.21.jar 8、osgi-over-slf4j-1.7.21-sources.jar 9、slf4j-android-1.7.21.jar 10、slf4j-android-1.7.21-...
该压缩包中包含以下内容: 1、jcl-over-slf4j-1.7.21.jar 2、jcl-over-slf4j-1.7.21-sources.jar 3、jul-to-slf4j-1.7.21.jar 4、jul-to-slf4j-1.7.21-sources.jar 5、log4j-over-slf4j-1.7.21.jar 6、log4j-over-...
slf4j-log4j12-1.7.5.jar。
赠送jar包:slf4j-log4j12-1.7.16.jar; 赠送原API文档:slf4j-log4j12-1.7.16-javadoc.jar; 赠送源代码:slf4j-log4j12-1.7.16-sources.jar; 赠送Maven依赖信息文件:slf4j-log4j12-1.7.16.pom; 包含翻译后的API...
这意味着你的代码将使用SLF4J API进行日志记录,而实际的日志输出则由Log4j控制,包括配置文件(如`log4j.properties`或`log4j.xml`)中的设置。 **log4j-1.2.16** Log4j是Apache软件基金会的一个开源项目,它提供...