在我当地,
我创建了一个 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。
我怎么解决这个问题?
谢谢。