我试图在一个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
需要注意的一点
slf4*.jar
中找不到GlassFish
,但在应用程序部署文件夹中除外。log4j.properties
中除了应用程序部署文件夹外没有其他GlassFish
。我已经尝试了很多东西,但无法找出记录的东西请帮我解决。
多次测试 我已经运行了多个测试,我删除了jar文件并将它们放在ear的lib文件夹中,几乎保存了每个EAR文件夹中的log4j.properties文件(rootfolder,classes文件夹,lib文件夹,META-INFO文件夹)但它根本没有影响,没有错误,没有记录。
如果有人不知道如何实现这一点(记录,EAR [有多个jar和war文件]和Glassfish),我会非常惊讶
答案 0 :(得分:0)
将您的log4j.properties
文件放在JAR文件中(您可以将其命名为loggin.jar
等)。这个JAR文件你将它放在lib
文件夹中(与log4j和SLF4J的库相同)。