log4j的配置问题,实在是找不出问题呀~求救

Liuxz-aaa 发布于 2012/06/19 23:04
阅读 824
收藏 0

### set log levels ### 
log4j.rootLogger = INFO,FileLog,FileLogError
log4j.logger.com.kx=INFO,FileLog,FileLogError
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=[%d{dd/MM HH🇲🇲ss},%c{1},%L<%p>] %m%n

log4j.appender.FileLog=org.apache.log4j.DailyRollingFileAppender
log4j.appender.FileLog.File=WEB-INF/appLog/kx.a.log
log4j.appender.FileLog.DatePattern='.'yyyy-MM-dd
log4j.appender.FileLog.layout=org.apache.log4j.PatternLayout
log4j.appender.FileLog.layout.ConversionPattern=[%d{yyyy-MM-dd HH🇲🇲ss}][%p][%F Line:%L (%M)] %m%n
log4j.appender.FileLog.Append=true
log4j.appender.FileLog.Threshold = INFO

log4j.appender.FileLogError=org.apache.log4j.DailyRollingFileAppender
log4j.appender.FileLogError.File=WEB-INF/appLog/kx.error.log
log4j.appender.FileLogError.DatePattern='.'yyyy-MM-dd
log4j.appender.FileLogError.layout=org.apache.log4j.PatternLayout
log4j.appender.FileLogError.layout.ConversionPattern=[%d{yyyy-MM-dd HH🇲🇲ss}][%p][%F Line:%L (%M)] %m%n
log4j.appender.FileLogError.Append=true
log4j.appender.FileLogError.Threshold = ERROR

上面是我的LOG4F的配置,其中日志输出路径没问题,在我项目的WEB-INFO下有自动生成日志文件

我代码中输出日志的方式是:

Logger logger = Logger.getLogger("com.kx");	
logger.error(message, e);

Log log = LogFactory.getLog(obj.getClass());
log.error(message,e);

使用上面两种方式的语句输出,都只在控制台上有详细输出,但在文件中没有任何输出

很郁闷呀,找不出问题!求解答,谢谢了!

我的是使用log4j-1.2.14.jar包

加载中
1
FoxHu
FoxHu
System.setProperty("webappHome", webappHome),其中webappHome可以通过servletContext.getRealPath("/")获得,
log4j.appender.FileLog.File=${webappHome}/WEB-INF/appLog/kx.a.log
0
华兹格
华兹格
你确认文件输出前自己手动建立了??
0
Liuxz-aaa
Liuxz-aaa

我使用绝对路径时,输出日志正常 ,但使用相对路径,就输出不了,我是在web.xml中使用

<listener><listener-class>com.web.MyContextLoaderListener</listener-class></listener>

用程序计算出日志输出的绝对路径,再修改了log4j配置文件

@Override
	public WebApplicationContext initWebApplicationContext(
			ServletContext servletContext) {
		// TODO Auto-generated method stub
		String prefix = servletContext.getRealPath("/");
		String file = servletContext.getInitParameter("log4jConfigLocation");
		String filePath = prefix + file.substring(1);
		Properties props = new Properties();
		System.out.println(prefix);
		System.out.println(file);
		System.out.println(filePath);

		try {
		    FileInputStream log4jStream = new FileInputStream(filePath);
		    props.load(log4jStream);
		    log4jStream.close();
			    String logFile = prefix +props.getProperty("log4j.appender.FileLog.File"); //设置路径
			    String logFileError = prefix +props.getProperty("log4j.appender.FileLogError.File"); //设置路径
	
			    System.out.println(logFile);
			    System.out.println(logFileError);
			    props.setProperty("log4j.appender.FileLog.File", logFile);
			    props.setProperty("log4j.appender.FileLogError.File", logFileError);
			    PropertyConfigurator.configure(props); //装入log4j配置信息
		    
		} catch (IOException e) {
		    e.printStackTrace();
		}
		
		return super.initWebApplicationContext(servletContext);
	}

  

0
疯狂的艺术家
疯狂的艺术家
看看是不是路径问题,使用绝对路径排查一下
0
Liuxz-aaa
Liuxz-aaa

使用绝对路径时没问题.

hil2010这们兄弟的方法有效,问题是解决了.

但为什么原来那方法会得不到输出呢?

0
dodojava
dodojava
应该不是没有输出,楼主全盘搜一下日志文件,应该有很多一样的文件名, 你只是看的路径不一样
返回顶部
顶部