我想请教一下大家:
我使用log4j,JBuilder 2005 我把log4j.properties(此文件已经写好了)放在工程的src目录下,可以运行,输出error信息。
但是我现在把工程文件打jar包了,我还想使用log4j.properties文件,我该怎么办?
无论我把log4j.properties文件打到jar包中,还是把此文件放在与jar包的相同目录下,都不起作用。程序打成jar包后,如何使用log4j.properties文件进行error等信息的输出?谢谢大家!
我使用log4j,JBuilder 2005 我把log4j.properties(此文件已经写好了)放在工程的src目录下,可以运行,输出error信息。
但是我现在把工程文件打jar包了,我还想使用log4j.properties文件,我该怎么办?
无论我把log4j.properties文件打到jar包中,还是把此文件放在与jar包的相同目录下,都不起作用。程序打成jar包后,如何使用log4j.properties文件进行error等信息的输出?谢谢大家!
我可能没有说清楚:
我的意思是我把log4j.properties文件放在了工程AA的src文件夹下,可以起作用。但是现在我把工程AA的class文件打成AA.jar了,我不知道log4j.properties文件,以前放在src目录下,而现在应该放在哪,能让log4j.properties文件关联上AA.jar?
多谢大家回复!
但我的是log4j.properties,没起作用。难道是不是还有别的说法?多谢大家!
回复#5楼:
我把log4j.properties放在了class目录下,打到了jar包中,但是没有起到效果:当我操作异常时,并没有日志文件被新建。
我把log4j.properties放在Class-Path中,并把log4j.properties放在了与AA.jar同级目录中。
谢谢大家!MANIFEST.mf 文件内容:Manifest-Version: 1.0
Class-Path: lib/hapi-0.5beta.jar lib/jdom.jar lib/commons-logging.jar
lib/xerces.jar log4j.properties
Main-Class: edu.imust.hl7.app.HL7Applicationlog4j.properties文件内容:log4j.rootLogger=WARN, Console,FILElog4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=(%r ms) [%t] %-5p: %c#%M %x: %m%nlog4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=file.html
log4j.appender.FILE.Append=true
log4j.appender.FILE.layout=org.apache.log4j.HTMLLayout
我把log4j.properties 放在classes目录下,一起打到了jar包中,在控制台用java -jar AA.jar 能够输出log.error中的信息,应该是起作用了,但是没有新建file.html文件(因为 log4j.appender.FILE.File=file.html )无论我通过控制台,或者双击jar包执行,都没有新文件产生,这是为啥啊?
谢谢大家!
确实,放在一个目录之下,可以,不用在MANIFEST.mf中class-path指定,也不用放在classes中一起打包,在控制台执行java -jar AA.jar 在控制台输出了log.error中的内容。但为什么没有新建file.html文件呢?在控制台输出:2009-8-31 19:42:43 ca.uhn.log.HapiLogImpl error
严重: Error accepting remote connection在控制台输出了,但为什么没有输出在文件中?在没打包之前,直接运行project.jpx是可以产生file.html文件来记录信息的,而打包后只在控制台中有信息?谢谢大家热心帮助!
|
+-- test.jar
|
+-- lib
| |
| +-- log4j.jar
|
+-- log4j.xmltest.jar 中 META-INF/MANIFEST.MF 内容为:Manifest-Version: 1.0
Main-Class: com.bao.test.Main
Class-Path: . lib/log4j.jarlog4j.xml 内容为:<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %-5p [%c{1}] %m%n" />
</layout>
</appender>
<appender name="FILE" class="org.apache.log4j.DailyRollingFileAppender">
<param name="File" value="logs/file.log" />
<param name="DatePattern" value="'.'yyyy-MM-dd'.log'" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %-5p [%c{1}] %m%n" />
</layout>
</appender>
<root>
<priority value="debug" />
<appender-ref ref="CONSOLE" />
<appender-ref ref="FILE" />
</root>
</log4j:configuration>我在 root 目录下执行 java -jar test.jar 命令后,log4j 会自动在 root 目录下新建一个 logs 的目录,然后把 file.log 放在这个目录中。
/com/
/*.class
/image/
/*.jpg
/META-INF/
/MANIFEST.MF
/org/
/apache/
/log4j/
/*.class
/log4j.properties
PS:我写的是一个小可执行jar文件.里面带有记录日志的功能,用的是LOG4J.起初想把logj4.jar一起打包的,结果运行不了,报找不到主类,其实并不是找不到入口类,而是找不到log4j。于是就采取了将log4j的代码一起打包,log4j.properties就放在主目录下,可以找得到。
谢谢大家热心帮助!