I am using a log4j for logging.
This is how my log4j.properties looks like
# Root logger option
log4j.rootLogger=info, debug, error file
# Direct log messages to a log file
log4j.appender.file=org.apache.log4j.RollingFileAppender
#Redirect to Tomcat logs folder
#log4j.appender.file.File=${catalina.home}/logs/logging.log
log4j.appender.file.File=C:\\Users\\raj_sanpui\\Desktop\\Automation\\test.log
log4j.appender.file.MaxFileSize=10MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
Run Code Online (Sandbox Code Playgroud)
Each of my Java files constructor has this call:
public class IMGOperations {
private org.apache.log4j.Logger log;
private String hostname;
private String sysid;
private String dicomfilepath;
public IMGOperations(String hostname, String sysid, String dicomfilepath)
{
this.hostname=hostname;
this.sysid=sysid;
this.dicomfilepath=dicomfilepath;
PropertyConfigurator.configure(mainConfig.LOG4JCONFPATH);
log = Logger.getLogger(mainConfig.class);
}
Run Code Online (Sandbox Code Playgroud)
I am getting this error on running my Java program:
log4j:ERROR Could not find value for key log4j.appender.debug
log4j:ERROR Could not instantiate appender named "debug".
log4j:ERROR Could not find value for key log4j.appender.error file
log4j:ERROR Could not instantiate appender named "error file".
log4j:ERROR Could not find value for key log4j.appender.debug
Run Code Online (Sandbox Code Playgroud)
I am basically a C/C++ folk, who knows Core Java, and pretty much a noob in this stuff. So please pardon me, if you find it too basic.
问题出在你的第二行,它应该是:
# Root logger option
log4j.rootLogger=INFO, stdout, file
Run Code Online (Sandbox Code Playgroud)
这意味着您将登录INFO级别,并为stdout和文件实例化log4j appender.不用说,INFO可以切换到任何其他日志记录级别(TRACE,DEBUG,INFO,WARN,ERROR,FATAL).
编辑:
log4j.rootLogger有两个或更多参数.第一个参数是日志记录级别,以下是log4j appender的名称.您看到问题中出现的错误,因为"debug"或"error file"的名称没有appender,如行所示:
log4j:ERROR Could not find value for key log4j.appender.debug
log4j:ERROR Could not find value for key log4j.appender.error file
Run Code Online (Sandbox Code Playgroud)
编辑2:
鉴于以下配置文件:
# Root logger option
log4j.rootLogger=info, debug, error file
# Direct log messages to a log file
log4j.appender.file=org.apache.log4j.RollingFileAppender
#Redirect to Tomcat logs folder
#log4j.appender.file.File=${catalina.home}/logs/logging.log
log4j.appender.file.File=C:\\Users\\raj_sanpui\\Desktop\\Automation\\test.log
log4j.appender.file.MaxFileSize=10MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
Run Code Online (Sandbox Code Playgroud)
Log4j希望为"debug"和"error file"定义appender,但是,你只为"file"定义了一个appender.你已经定义了你的appender:
log4j.rootLogger=info, file
log4j.appender.file=org.apache.log4j.RollingFileAppender
Run Code Online (Sandbox Code Playgroud)
要使用名为"debug"的appender,您需要另一个类似的行:
log4j.rootLogger=info, debug
log4j.appender.debug=org.apache.log4j.RollingFileAppender
Run Code Online (Sandbox Code Playgroud)
您在log4j.rootLogger属性中声明的appender与appender定义之间应该存在一对一的映射.
如果你想到这样的每个属性可能会有所帮助:
log4j.appender.file => create new file appender object
log4j.appender.file.File => set the file property of the file appender
log4j.appender.file.MaxFileSize => set the max file size of the file appender
log4j.appender.file.MaxBackupIndex => set the max backup index property of the file appender
log4j.appender.file.layout => set the layout of the file appender
etc...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18426 次 |
| 最近记录: |