如何在Glassfish上的EAR中使用log4j配置slf4j

时间:2015-05-22 13:03:18

标签: java-ee logging glassfish log4j slf4j

我试图在一个EAR文件中打包2个项目(ExampleWeb.war和ExampleEJb.jar)。除了日志记录之外,每件事情都很好。没有错误,但Glassfish服务器上甚至没有显示日志消息。没有控制台没有。 以下是我的耳文件的内容

Example.ear
    ExampleWeb.war
    ExampleEJB.jar
    lib
        log4j.properties
        slf4j-api-1.7.12.jar
        slf4j-log4j12-1.7.12.jar
        log4j-1.2.17.jar
    META-INF
        application.xml

application.xml的内容如下

<?xml version="1.0" encoding="UTF-8"?>
<application xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:application="http://java.sun.com/xml/ns/javaee/application_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_6.xsd" id="Application_ID" version="6">
  <display-name>Example</display-name>
  <module>
    <web>
      <web-uri>ExampleWeb.war</web-uri>
      <context-root>/</context-root>
    </web>
  </module>
  <module>
    <ejb>ExampleEJB.jar</ejb>
  </module>
  <library-directory>lib</library-directory>
</application> 

请注意我可以使用其EJB界面从Web项目调用remote,并且hello方法使用System.out.println("hello");成功地向控制台写入消息,但是怎么没有发生任何事情log.info("hello from log");

这是我如何初始化日志对象

//import statement
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

//variable initialization
private static final Logger log = LoggerFactory.getLogger(HelloFacade.class);

以下是log4j.properties文件

的内容
# Root logger option
log4j.rootLogger=FILE,console

# ------------- Console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=[%d{ISO8601}]%5p%6.6r[%t]%x - %C.%M(%F:%L) - %m%n
log4j.appender.console.Threshold=INFO

# ---------------- File
log4j.appender.FILE=org.apache.log4j.RollingFileAppender
log4j.appender.FILE.File=${com.sun.aas.instanceRoot}/logs/log4j.log
# Archive log files (one backup file here)
log4j.appender.FILE.MaxBackupIndex=2
# Control the maximum log file size
log4j.appender.FILE.MaxFileSize=1000KB
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=[%d{ISO8601}]%5p%6.6r[%t]%x - %C.%M(%F:%L) - %m%n
log4j.appender.FILE.Threshold=INFO

需要注意的一点

  1. slf4*.jar中找不到GlassFish,但在应用程序部署文件夹中除外。
  2. log4j.properties中除了应用程序部署文件夹外没有其他GlassFish
  3. 我已经尝试了很多东西,但无法找出记录的东西请帮我解决。

    多次测试 我已经运行了多个测试,我删除了jar文件并将它们放在ear的lib文件夹中,几乎保存了每个EAR文件夹中的log4j.properties文件(rootfolder,classes文件夹,lib文件夹,META-INFO文件夹)但它根本没有影响,没有错误,没有记录。

    如果有人不知道如何实现这一点(记录,EAR [有多个jar和war文件]和Glassfish),我会非常惊讶

1 个答案:

答案 0 :(得分:0)

将您的log4j.properties文件放在JAR文件中(您可以将其命名为loggin.jar等)。这个JAR文件你将它放在lib文件夹中(与log4j和SLF4J的库相同)。