Log4j socketappender解决多线程写日志问题

可以使用socketappender解决多进程写问题。

 

server端代码:

[java] view plain copy
  1. package log4j;  
  2. import org.apache.log4j.Logger;  
  3. import org.apache.log4j.net.SimpleSocketServer;  
  4. public class Server{  
  5.     static Logger cat = Logger.getLogger(SimpleSocketServer.class);  
  6.     public static void main(String[] args){  
  7.         System.out.println("Accessing socket on localhost:6666");  
  8.         String[] g = {"6666""test.properties"};  
  9.         SimpleSocketServer.main(g);  
  10.     }  
  11. }  

 

server端的配置文件test.properties:

log4j.rootLogger=debug,stdout,R

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

# Pattern to output the caller's file name and line number.
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n

log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=remote_log.log

log4j.appender.R.MaxFileSize=1024KB

log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n

 

client端代码:

[java] view plain copy
  1. package log4j;  
  2. import org.apache.log4j.Level;  
  3. import org.apache.log4j.Logger;  
  4. import org.apache.log4j.PropertyConfigurator;  
  5. import org.apache.log4j.net.SocketAppender;  
  6. import org.apache.log4j.spi.LoggingEvent;  
  7. public class Client1{  
  8.     static Logger logger = Logger.getRootLogger();  
  9.     public static void main(String argv[]) {  
  10.     // Try sending logging events through the SocketAppender in the log4j_remote.properties file  
  11.     System.out.println("Try sending logs through the SocketAppender in the log4j.properties file");  
  12.     PropertyConfigurator.configure("client.properties"); //Logs to a SocketAppender; host 127.0.0.1, port 4445  
  13.     logger.debug("Hello world");  
  14.     logger.info("What a beatiful day.");  
  15.     // And try sending logging events through SocketAppender instance  
  16.     System.out.println("Try sending logs through a SocketAppender instance");  
  17.     SocketAppender sa = new SocketAppender("localhost"6666);  
  18.     System.out.println("Created SocketAppender instance");  
  19.     String logMsg = "Writing log event through SocketAppender instance";  
  20.     LoggingEvent le = new LoggingEvent("TestLog4J", Logger.getRootLogger(), Level.DEBUG, logMsg, new Throwable());  
  21.     sa.append(le);  
  22.     //sa.close();  
  23.     }  
  24. }  

 

client端的配置文件client.properties:

log4j.rootCategory=DEBUG,stdout,A1

# ConsoleAppender
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

# Pattern to output the caller's file name and line number.
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n

# A1 is set to be a SocketAppender sending its output to the server running on the remote host, port 12345.
log4j.appender.A1=org.apache.log4j.net.SocketAppender
log4j.appender.A1.Port=6666
log4j.appender.A1.RemoteHost=localhost

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值