`

resin记录日志log4j配置

 
阅读更多

在resin的配置文件\resin-pro-3.1.8\conf\morden.conf加上下面这几行:

<stderr-log  path="${resin.home}/log/stderr.log" timestamp="[%m-%d %H:%M:%S.%s] " rollover-size="100mb" rollover-period="1W"   rollover-count="10" />
   
    <stdout-log  path="${resin.home}/log/stdout.log" timestamp="[%m-%d %H:%M:%S.%s] " rollover-size="100mb" rollover-period="1W" rollover-count="10" />
   
   <log name="" level="info" path="${resin.home}/log/jdk-out.log" timestamp="[%m-%d %H:%M:%S.%s] {%{thread}} " rollover-size="100mb" rollover-period="1W" rollover-count="10"/>

 

程序启动之后,在resion的日志文件夹resin-pro-3.1.8\log下面,会有相应的日志文件:

jdk-out.log

stderr.log

stdout.log

上面配置文件的第三个日志配置,有个level的属性可以配置日志输出级别

 

 

注意:一般maven构建项目,log4j.properties要放在类路径下面,如:

 

程序中记录日志直接用

private final Logger logger = LoggerFactory.getLogger(getClass());

来获取logger对象,调用info或者方法记录日志,如:

public class UserDaoListener implements DaoListener {
	private final Logger logger = LoggerFactory.getLogger(getClass());
	@Autowired
	GeliDao geliDao;
	
	@SuppressWarnings("rawtypes")
	@Override
	public Class getEntityType() {
		return User.class;
	}

	@Override
	public void onEvent(Event event, Object entity) {
		User user = (User) entity;
		switch (event) {
		case PostSelect:
			logger.info("passportId: {}, userId: {} nickname:{}", new Object[] {user.getPassportId(), user.getUserId(), user.getNickName()});
			if(user.getAccount()!=null){
				user.setNickName(user.getAccount().getNickName());
			}
			geliDao.setCache(CacheKey.PASSPORT_PREFIX +user.getPassportId(), geliDao.object2String(user));
			break;
		case PostUpdate:
			geliDao.deleteCache(CacheKey.PASSPORT_PREFIX +user.getPassportId());
			break;
		default:
			break;
		}
	}

}

 
在调用 LoggerFactory.getLogger(getClass())方法时,程序默认会在类路径下加载log4j.properties文件, 如果没有这个文件,虽然程序没有报错,但stderr.log日志输出异常:

[04-09 16:26:24.155] log4j:WARN No appenders could be found for logger (org.springframework.web.context.ContextLoader).
[04-09 16:26:24.156] log4j:WARN Please initialize the log4j system properly.
[04-09 16:26:24.156] log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
[04-09 16:27:10.299] log4j:WARN No appenders could be found for logger (org.springframework.web.context.ContextLoader).
[04-09 16:27:10.299] log4j:WARN Please initialize the log4j system properly.
[04-09 16:27:10.299] log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
具体可以看http://logging.apache.org/log4j/1.2/faq.html#noconfig这里。

 

log4j.properties的内容如下

log4j.rootLogger=INFO, stdout
######################### logger ##############################

log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.conversionPattern = %d [%t] %-5p %c - %m%n

#log4j.logger.com.danga.MemCached.MemCachedClient=WARN

log4j.appender.env = org.apache.log4j.ConsoleAppender
log4j.appender.env.layout = org.apache.log4j.PatternLayout
log4j.appender.env.layout.conversionPattern = %d %m%n

log4j.additivity.org.gelivable.web.EnvFilter = false
log4j.logger.org.gelivable.web.EnvFilter = DEBUG, env

 

如果在resin配置文件配置了上面的日志输出文件,尽管log4j配置了log4j.appender.stdout = org.apache.log4j.ConsoleAppender,在resin启动的时候,控制台是没有输出相关日志信息,只在resin-pro-3.1.8\log日志文件输出。要想在控制台看到输出的日志信息,就要把上面resin配置文件的日志配置去掉,如去掉下面这两个日志配置:

<stderr-log  path="${resin.home}/log/stderr.log" timestamp="[%m-%d %H:%M:%S.%s] " rollover-size="100mb" rollover-period="1W"   rollover-count="10" />
    <stdout-log  path="${resin.home}/log/stdout.log" timestamp="[%m-%d %H:%M:%S.%s] " rollover-size="100mb" rollover-period="1W" rollover-count="10" />

 

 不能同时在日志文件和控制台看到输出日志,这个可能与resin服务器有关,具体原因暂时不明.

 

 

 

 

 

 

 

  • 大小: 35.4 KB
分享到:
评论

相关推荐

    log4j初始化

    `log4j`是一款开源的日志记录工具,广泛应用于Java应用程序中,用于记录程序运行时的各种信息,包括错误、警告、信息等不同级别的日志。其强大的配置功能和灵活性使得开发人员能够根据实际需求调整日志输出的细节,...

    log4j的笔记

    Log4j 是一个广泛使用的Java日志框架,它允许开发者记录应用程序中的事件和错误信息,以便于调试、监控和日志分析。Log4j 的主要优点在于它的灵活性和可配置性,可以方便地调整日志级别,将日志输出到不同的目的地,...

    log4j

    通过以上配置,我们可以看到 Log4j 被配置为将日志信息记录到文件 `example11.log` 中,并且还配置了一个控制台输出的 Appender。这些配置使得开发者可以根据实际需求调整日志记录的方式和内容,从而更好地满足不同...

    resin4.0.47

    通过`log4j`或内置的日志系统,Resin提供了详细的日志记录功能。同时,Resin管理员控制台提供了实时监控服务器状态、性能指标和错误报告的能力。 10. **版本更新与升级**: Resin 4.0.47的发布意味着该版本可能...

    Resin服务器配置指南 详解.docx

    - `-Xloggc:./log/gc.log`: 记录垃圾回收的日志到指定文件。 - `-XX:MaxNewSize`: 设置新生代的最大内存为 256MB。 - `-XX:MaxPermSize`: 设置永久代的最大内存为 256MB。 #### 五、查看日志的方法 Resin 提供了...

    【白雪红叶】JAVA学习技术栈梳理思维导图.xmind

    log4j logback commong logging jdk logger 测试框架 测试框架 junit easymock testng mockito bug管理 禅道 jira 开发工具 编程工具 eclipse myeclipse idea vi VS webstorm sublime text ...

    Java学习的30个目标.txt

    - **Log4J**:熟悉Log4J的基本配置,学会使用Log4J进行日志记录。 - **其他框架**:了解Quartz、JGroups、JCache等框架的基本功能,学会使用这些框架解决具体问题。 #### 二十、本地接口 - **JNI**:掌握Java ...

    梳理的一些java开发中用上的框架和开发工具,肯定会遗漏,欢迎补充

    Apache Log4j 2 是一款日志框架,提供比原版Log4j更加强大的功能。 - **Logback**: 框架。Logback 是Log4j的一个替代品,提供了更好的性能。 - **SLF4J**: 框架。Simple Logging Facade for Java (SLF4J) 是一个用于...

    java的30个学习目标

    - Log4J用于日志记录,Quartz用于任务调度。 #### 25. **网络通信(JGroups)** - 实现节点间的通信,适用于分布式应用。 #### 26. **分布式缓存(JCache)** - 在集群环境中提供缓存功能,加速应用响应。 #### 27...

    java学习目标

    了解不同日志框架如Log4J,以及任务调度工具如Quartz,可以提升应用的运维能力和自动化水平。 #### 15. 分布式缓存与全文搜索 掌握分布式缓存如JCache,以及全文搜索引擎如Lucene,是构建高性能应用的关键。 ####...

    学习Java语言的30个参考,让你坐拥别人之上的30个擦考

    - **Log4J**:掌握日志记录工具的使用,记录程序运行时的重要信息。 - **Quartz**:学习任务调度框架的使用,实现定时任务。 ### 20. 分布式缓存与搜索 - **JCache**:了解分布式缓存的实现方法。 - **Lucene**:...

    成为Java高手的25个学习要点

    掌握Log4J、Quartz等日志记录和任务调度框架,对于监控系统运行状态和执行周期性任务非常有用。 #### 20. 使用Java IDE 选择一款合适的集成开发环境(IDE),如Sun One NetBeans、IntelliJ IDEA或Eclipse等,能够...

    学习java的30个目标.txt

    - **框架选择**:Log4J、Quartz等。 - **应用场景**:日志管理、定时任务调度等。 #### 目标21:掌握网络通信与缓存技术 - **技术框架**:JGroups、JCache等。 - **应用场景**:分布式系统的通信与数据缓存。 ###...

    Java高手的25个学习要点.txt

    日志框架如Log4J可以帮助开发者记录应用程序运行过程中的关键信息,便于调试和监控。此外,还有许多其他有用的工具库,如Quartz(用于调度任务)、JGroups(用于集群通信)等。 #### 20. 使用主流的Java集成开发...

Global site tag (gtag.js) - Google Analytics