我正在使用log4cxx,最近开始使用SocketAppender 1。我使用以下内容:
java org.apache.log4j.net.SimpleSocketServer 4712 log4j-server.properties
并且能够在服务器上写日志。我也有一个本地的SizeRollover策略设置。一切正常,直到我停止运行SimpleSockerServer。此时我的C ++应用程序崩溃了,我认为在属性文件中指定了ReconnectionDelayTime之后。
来自/lib64/libpthread.so.0的write()中的0 0x0000003c5fa0e6fd
来自/usr/lib64/libapr-1.so.0的apr_socket_send()中的1 0x00007ffff79eade7
log4cxx :: helpers中的2 0x00007ffff7d52bb1 :: Socket :: write(log4cxx :: helpers :: ByteBuffer&)() 来自/usr/lib64/liblog4cxx.so.10
3 0x00007ffff7d595ed in log4cxx :: helpers :: SocketOutputStream :: flush(log4cxx :: helpers :: Pool&)() 来自/usr/lib64/liblog4cxx.so.10
4 0x00007ffff7d5468c in log4cxx :: net :: SocketAppender :: append(log4cxx :: helpers :: ObjectPtrT const&amp;,log4cxx :: helpers :: Pool&amp;)()from /usr/lib64/liblog4cxx.so.10 < / p>
5 0x00007ffff7cd7d9d in log4cxx :: AppenderSkeleton :: doAppend(log4cxx :: helpers :: ObjectPtrT const&amp;,log4cxx :: helpers :: Pool&amp;)()来自/usr/lib64/liblog4cxx.so.10
6 0x00007ffff7cd50f4 in log4cxx :: helpers :: AppenderAttachableImpl :: appendLoopOnAppenders(log4cxx :: helpers :: ObjectPtrT const&amp;,log4cxx :: helpers :: Pool&amp;)()from /usr/lib64/liblog4cxx.so.10 < / p>
7 0x00007ffff7d1adfd in log4cxx :: Logger :: callAppenders(log4cxx :: helpers :: ObjectPtrT const&amp;,log4cxx :: helpers :: Pool&amp;)const()来自/usr/lib64/liblog4cxx.so.10
8 0x00007ffff7d1c4ac in log4cxx :: Logger :: forcedLog(log4cxx :: helpers :: ObjectPtrT const&amp;,std :: basic_string,std :: allocator&gt; const&amp;,log4cxx :: spi :: LocationInfo const&amp;)const( ) 来自/ usr / lib64 / liblog4cxx.so.10`
我的问题是,如果服务器停止,可以将log4cxx写日志写入本地文件吗? 如果我再次启动服务器,在应用程序崩溃之前,SocketAppender不会再次收到日志。我怎样才能解决这个问题?还有其他建议通过网络发送日志吗?