Ведение журнала для конкретного приложения в Jboss 5.1 - PullRequest
1 голос
/ 14 февраля 2012

Я добавил следующую конфигурацию в директорию CONFIG моего jboss AS

Запись в файле jboss-log4j.xml

<appender name="YYY" class="org.apache.log4j.FileAppender">
      <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"></errorHandler>
      <param name="Append" value="false"/>
      <param name="File" value="${jboss.server.home.dir}/log/app1.log"/>
      <layout class="org.apache.log4j.PatternLayout">
         <param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{1}] %m%n"/>
      </layout>
   </appender>
  <category name="com.XXX">
  <priority value="INFO" />
     <appender-ref ref="YYY"></appender-ref>
   </category>

Я видел, что app1.log был создан при запуске JBoss. У меня нет файла log4j.properties или log4j.xml для конкретного приложения в моем файле war приложения. .log. Но этого не происходит.

Не могу этого добиться, имея log4j.properties в моей войне приложений. Мой Jboss настроен таким образом, что специфичные для приложения log4j.properties должны быть переопределены файлом jboss-log4j.xml.

Любая помощь приветствуется

Ответы [ 2 ]

1 голос
/ 22 февраля 2012

В дополнение к конфигурации, которую вы упомянули, вы должны убедиться, что в ваше приложение не включены файлы log4j.jar или commons-logging.jar.

1 голос
/ 15 февраля 2012

Вы определенно можете сделать это. В $JBOSS_HOME/server/$PROFILE/conf/jboss-log4j.xml внесите следующие изменения: -

 <!-- define the appender --> 
 <appender name="YYY" class="org.apache.log4j.RollingFileAppender">
            <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
            <param name="Append" value="true"/>
            <param name="MaxFileSize" value="500KB"/>
            <param name="MaxBackupIndex" value="1"/>
            <param name="File" value="${jboss.server.log.dir}/app1.log"/>

            <layout class="org.apache.log4j.PatternLayout">
                    <param name="ConversionPattern" value="%d{MM/dd/yy HH:mm:ss,SSS} %-5p [%c{1}] %m%n"/>
            </layout>
    </appender>

<!-- add the category for your classes with package name com.XXX for ERROR level -->
   <category name="com.XXX">
         <priority value="ERROR"/>
         <appender-ref ref="YYY"/>
    </category>

Вам даже не нужно перезапускать экземпляр JBoss. Обратите внимание, что $ jboss.server.log.dir ($ JBOSS_HOME / server / $ PROFILE / log) передается в качестве аргумента JVM в run.sh или в качестве параметра командной строки для run.sh.

Если вы не видите никаких выходных данных, то, вероятно, ваше приложение неправильно создало log4j, или имя вашего пакета отличается, либо вы обращаетесь к неправильному приложению, либо просто не выполняете инструкции log при выполнении кода. Убедитесь, что у вашего класса есть log4j, созданный правильно и под правильным именем пакета. Например:

package com.XXX;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.Logger;

public class MyServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
    private static Logger log = Logger.getLogger(MyServlet.class);

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            log.error("My Test Log Message");
}
...