概述
在resin的配置文件resin-pro-3.1.8confmorden.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.8log下面,会有相应的日志文件:
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.8log日志文件输出。要想在控制台看到输出的日志信息,就要把上面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服务器有关,具体原因暂时不明.
最后
以上就是现实故事为你收集整理的resin记录日志log4j配置的全部内容,希望文章能够帮你解决resin记录日志log4j配置所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复