Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在EJB模块中使用log4j?_Java_Log4j_Ejb - Fatal编程技术网

Java 如何在EJB模块中使用log4j?

Java 如何在EJB模块中使用log4j?,java,log4j,ejb,Java,Log4j,Ejb,我有一个使用Netbeans和glassfish 3.1.2的EJB模块。 我需要实现log,但我不知道如何在EJB中配置log4j。 我在部署时遇到以下问题: SEVERE: log4j:ERROR Ignoring configuration file [file:/C:/Users/Luis Carlos/AppData/Roaming/NetBeans/7.2/config/GF3/domain1/config/log4j.properties]. SEVERE: log4j:WARN

我有一个使用Netbeans和glassfish 3.1.2的EJB模块。 我需要实现log,但我不知道如何在EJB中配置log4j。 我在部署时遇到以下问题:

SEVERE: log4j:ERROR Ignoring configuration file [file:/C:/Users/Luis Carlos/AppData/Roaming/NetBeans/7.2/config/GF3/domain1/config/log4j.properties].
SEVERE: log4j:WARN No appenders could be found for logger (beans.RutasBean).
SEVERE: log4j:WARN Please initialize the log4j system properly.
SEVERE: log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
它显示在glassfish服务器控制台中

这是log4j.properties文件:

log4j.rootLogger=DEBUG, FILE
log4j.logger.myapp=DEBUG
log4j.appender.FILE=org.apache.log4j.RollingFileAppender 
log4j.appender.FILE.File=/space/gfv3/v3setup/GlassFish3/GlassFish/domains/domain1/logs/log4j.log
log4j.appender.FILE.MaxFileSize=100KB 
log4j.appender.FILE.MaxBackupIndex=1 
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout 
log4j.appender.FILE.layout.ConversionPattern=%d{DATE} %-5p %c{1} : %m%n 
我试过了 它说我必须在glassfish的服务器管理中配置这样的属性文件 -Dlog4j.configuration=文件://${com.sun.aas.instanceRoot}/config/log4j.properties 但是没有起作用

我有一个单例会话Bean,在startup方法中我配置了日志,因此根据我在Bean中的配置:

    private Logger log;
private static final String LOG4J_PROPERTIES = "/log4j.properties";

@PostConstruct
public void startup(){
    URL url = this.getClass().getResource(LOG4J_PROPERTIES);
    if(url == null || url.getFile().length() == 0) {
    throw new RuntimeException("Log4j config file "+ LOG4J_PROPERTIES +" not found");
}
    PropertyConfigurator.configure(url);
    log = Logger.getLogger(this.getClass());
    log.info("Starting application");
    em = Persistence.createEntityManagerFactory("BuscaBus-ejbPU");
    rutaController = new RutaJpaController(ut, em);
    actualizarCoordenadasRutas();
    ...
}
但仍然出现同样的错误

如何在EJB环境中配置log4j? 谢谢

请执行以下操作:

从服务器上删除-Dlog4j.configuration=。 删除可能放在C:/Users/Luis Carlos/AppData/Roaming/NetBeans/7.2/config/GF3/domain1/config中的所有log4j.properties 删除以下代码:

URL url = this.getClass().getResource(LOG4J_PROPERTIES);
if(url == null || url.getFile().length() == 0) {
throw new RuntimeException("Log4j config file "+ LOG4J_PROPERTIES +" not found");
删除以下内容:PropertyConfiguration.configureurl

完成上述步骤后,代码就可以让Log4J自动从类路径加载其Log4J.properties文件。根据我的经验,这是配置Log4J最灵活的方法。剩下要做的就是确保log4j.properties确实存在于类路径中的某个地方

您有以下选项:

将log4j.properties文件放在EJB模块的默认包中。这样,log4j.properties文件将与应用程序一起打包。这有其优点和缺点,但这是一个不同的故事,很可能属于不同的问答环节。 将log4j.properties放在文件系统的某个目录中,并将该目录添加到服务器的类路径中。按照GlassFish文档中的说明进行操作。 如果坚持让URL引用log4j.properties文件,则恢复-Dlog4j.configuration=指令。确保您提供的URL(指定log4j.properties文件)确实存在。另外,指定-Dlog4j.debug=true;这将为您提供来自Log4J本身的调试信息,准确地告诉您它在做什么。

执行以下操作:

从服务器上删除-Dlog4j.configuration=。 删除可能放在C:/Users/Luis Carlos/AppData/Roaming/NetBeans/7.2/config/GF3/domain1/config中的所有log4j.properties 删除以下代码:

URL url = this.getClass().getResource(LOG4J_PROPERTIES);
if(url == null || url.getFile().length() == 0) {
throw new RuntimeException("Log4j config file "+ LOG4J_PROPERTIES +" not found");
删除以下内容:PropertyConfiguration.configureurl

完成上述步骤后,代码就可以让Log4J自动从类路径加载其Log4J.properties文件。根据我的经验,这是配置Log4J最灵活的方法。剩下要做的就是确保log4j.properties确实存在于类路径中的某个地方

您有以下选项:

将log4j.properties文件放在EJB模块的默认包中。这样,log4j.properties文件将与应用程序一起打包。这有其优点和缺点,但这是一个不同的故事,很可能属于不同的问答环节。 将log4j.properties放在文件系统的某个目录中,并将该目录添加到服务器的类路径中。按照GlassFish文档中的说明进行操作。 如果坚持让URL引用log4j.properties文件,则恢复-Dlog4j.configuration=指令。确保您提供的URL(指定log4j.properties文件)确实存在。另外,指定-Dlog4j.debug=true;这将为您提供来自Log4J本身的调试信息,确切地告诉您它在做什么