2

以下は私のlog4j.propertiesです:

log4j.rootLogger=ALL, stdout

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d [%t] %p [%c] - %m%n


log4j.logger.org.springframework=ALL
log4j.logger.app.dev.ems=ALL
log4j.logger.org.springframework.transaction=ALL

私はlog4jConfigLocationweb.xmlで言及しました:

<context-param>
    <param-name>log4jConfigLocation</param-name>
    <param-value>/WEB-INF/resources/log4j.properties</param-value>
</context-param>

また、リスナークラスを定義しました。

<listener>
    <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>

しかし、コンソールでSpringTransactionログを確認できません。また、クラスから:app.dev.ems.web.wicket.page.home.HomePage私がしているとき:

Logger logger = LoggerFactory.getLogger(getClass());

public HomePage() {     
    logger.debug("<<<<<<<<<<<<<<<<<<<JYM>>>>>>>>>>>>>>>>>>");//if logger.info is used then it is showing.       
}

これもそのログを表示していません。私はWicketアプリケーションを使用しており、次のように設定しています。

<init-param>
    <param-name>configuration</param-name>
    <param-value>DEVELOPMENT</param-value>
</init-param>

WicketServletの定義中。

問題を見つけることができません。どんな情報も私にとって非常に役に立ちます。

注意:applicationContext.xmlを投稿したい場合は、それを行うことができます。トランザクションはアノテーション駆動型です。


log4j-1.2.14、slf4j-api-1.6.1、slf4j-log4j12-1.4.2を追加しました。そして、JBossAS-7.1.0-Finalを使用しています。

他のSOスレッドでは、これがJBossの問題であることがわかりました。そこで与えられた指示に従って、WEB-INFにjboss-deployment-structure.xmlを追加しました(META-INFでも試してみました)。

<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
    <deployment>
        <exclusions>
            <module name="org.apache.log4j" />
        </exclusions>
    </deployment>
</jboss-deployment-structure> 

そして、log4j.propertiesをロードするapplicationContext.xmlでBeanを定義しました。

<bean id="log4jInitializer" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
    <property name="targetClass" value="org.springframework.util.Log4jConfigurer" />
    <property name="targetMethod" value="initLogging" />
    <property name="arguments">
        <list>
            <value>classpath:/app/dev/ems/web/log4j.properties</value>
        </list>
    </property>
</bean>

しかし、残念ながらそれは機能しませんでした。

4

2 に答える 2

2

除外の使用は機能しているjboss-deployment-structure.xmlはずです。そうでない場合は、構成ファイルの場所である可能性があります。私はSpringに精通していないので<context-param/>、ログ構成の場所を指定する一般的な方法は、を追加することかもしれません。

アーカイブlog4j.propertiesWEB-INF/classesまたはディレクトリに移動してみてください。META-INFまた、デプロイメントにlog4jライブラリが含まれていることを確認してください。

FWIWはjboss-deployment-structure.xml、ロギング構成に必要なくなります。まだリリースされていませんが、アップストリームソースにあります。

デバッグをオンにする方法を探しているように見えるので、2つのことを行う必要があります。デバッグメッセージが通過できるようにハンドラーを設定する必要があります。また、すべてのメッセージが届かない場合でも、少なくともデバッグできるロガーを設定する必要があります。

たとえば、あなたの場合、そのようなロガーを作成します。

<logger category="app.dev.ems.web.wicket" />

これにより、すべてのレベルでログを記録するロガーが作成されます。次に、ハンドラーを作成するか、以前に定義したハンドラーを変更して、デバッグメッセージを受け入れます。

もう1つの例は、ログメッセージをファイルに出力する特定のロガーのファイルハンドラーを作成することです。

<file-handler name="myFileHandler>
    <level name="DEBUG"/>
    <file relative-to="jboss.server.log.dir" path="my-log.log"/>
</file-handler>

次に、ロガーを作成し、それにハンドラーを割り当てます。

<logger category="app.dev.ems.web.wicket">
    <handlers>
        <handler name="myFileHandler/>
    </handlers>
<logger>

これで、のカテゴリを持つロガーを通過したすべてのログメッセージはapp.dev.ems.web.wicket.*、ルートロガーに接続されたハンドラーに加えてそのファイルに出力されます。server.logこれらをデフォルトまたはコンソールに表示したくない場合は、use-parent-handler="false"属性をロガーに追加できます。

于 2012-04-29T18:06:29.580 に答える
0

私は解決策を見つけました。私の目的は、トランザクションログを確認することでした。そして今、私はそれを見ることができます。私がしたことは、standalone/configurationにあるstandalone.xmlファイルを変更したことです。Loggingサブシステムの一部を変更しました。

コンソールハンドラー:

<console-handler name="CONSOLE">
   <level name="INFO"/>
   <formatter>
       <pattern-formatter pattern="%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/>
   </formatter>
 </console-handler>

に変更されました

<console-handler name="CONSOLE">
   <level name="DEBUG"/>
   <formatter>
       <pattern-formatter pattern="%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/>
   </formatter>
 </console-handler>

そしてルートロガー

<root-logger>
   <level name="INFO"/>
   <handlers>
      <handler name="CONSOLE"/>
      <handler name="FILE"/>
   </handlers>
</root-logger>

に変更されました

<root-logger>
   <level name="DEBUG"/>
   <handlers>
      <handler name="CONSOLE"/>
      <handler name="FILE"/>
   </handlers>
</root-logger>

そしてそれはうまくいきます。これで、コンソールにDEBUGログが表示されます。:)

于 2012-04-29T20:11:17.777 に答える