0

在我当地,

我创建了一个 log4j2.xml 来进行这样的配置。

    <?xml version="1.0" encoding="UTF-8"?>

    <configuration status="OFF">
      <appenders>
        <!-- Async Loggers will auto-flush in batches, so switch off immediateFlush. -->

        <FastFile name="AsyncFastFile" fileName="${sys:logFilename}" 
                  immediateFlush="false" append="true">
          <PatternLayout>
            <pattern>test %m %m %ex%n</pattern>
          </PatternLayout>
        </FastFile>

    <JDBC name="databaseAppender" tableName="mytablename">
          <DriverManager url="jdbc:oracle:thin:ORCL_USERNAME/PASS@//MYSERVERNAME:PORTNO/DBNAME" />
          <Column name="KEY1" pattern="%X{sayi1}" />
          <Column name="KEY2" pattern="%X{sayi2}" />
          </JDBC>

        <JDBC name="databaseAppenderJNDI" tableName="mytablename">
      <DataSource jndiName="java:/comp/env/jdbc/logWS" />
      <Column name="KEY1" pattern="%X{sayi1}" />
      <Column name="KEY2" pattern="%X{sayi2}" />
     </JDBC>  


      </appenders>

      <loggers>


        <!-- pattern layout actually uses location, so we need to include it -->
        <asyncLogger name="ASYNC" level="TRACE" additivity="false">
          <appender-ref ref="databaseAppender"/>
        </asyncLogger>

 <!-- pattern layout actually uses location, so we need to include it -->
        <asyncLogger name="ASYNCwithJNDI" level="TRACE" additivity="false">
          <appender-ref ref="databaseAppenderJNDI"/>
        </asyncLogger>


        <root level="info" includeLocation="true">
          <appender-ref ref="databaseAppender"/>
        </root>

      </loggers>
    </configuration>

我可以通过在我称为日志函数的 java 类中切换 loggername 来将日志插入文本文件和 DB。我本地没有问题。

在 Webshere 服务器中,

我调用 Web 服务进行日志记录。我正在使用相同的配置文件和调用日志函数的相同 java 代码。我可以将日志插入文件,但无法将日志插入数据库。我尝试了 driverManager url 和 JNDI。但什么都没有改变。在两种方式中,我无法将日志插入数据库并且程序不会在 try-catch 中抛出任何错误。所以我找不到问题在哪里。

注意:JNDI url 和 drivermanager url 没有问题。因为我可以在 wepshere 的不同 web 服务中完美地使用这些 url。我也可以使用相同的代码将日志插入本地数据库。

注意:将日志插入 txt 文件没有问题。Websphere 服务器中只有数据库插入是问题。所以配置文件类路径没有问题。

为了您的信息,我正在使用 oracle DB,但问题不在于 DB。
我在服务器中跟踪网络包,我意识到 Web 服务不会将任何包发送到数据库。包裹无法到达 DB。

我怎么解决这个问题?

谢谢。

4

1 回答 1

0

请在 log4j2 问题跟踪器中报告此问题,以便 log4j 团队可以查看它。

于 2013-11-06T22:17:26.797 回答