当我们在创建集群应用时,最头痛的时候就是出问题时,需要查看日志,但不清楚应该去哪台机子上看日志,针对此种情况,可以考虑把日志统一到专门的日志服务器上,这样只需要在日志服务器上进行查看,以下代码是作为一个例子,还不能看出日志的输出为哪台机子,以后发现再来更新此文章:
此文章希望做到抛砖引玉的作用,只是一个基本的日志应用,在此基础上可以延伸出以下几种应用方式:
1、话单文件:在服务器对某些类做专门的记录,并记录到专门的话单文件中;
2、调试日志:在服务器设置最低级别,收集到所有日志打印,并打印到某个临时文件中,但要注意文件的大小控制,防止日志过大;
3、关键日志:保存一些历史关键日志,以方便日后进行查询及跟踪。
Log4j Client的例子代码
import org.apache.log4j.Logger; import com.easier.util.StatUtils; public class Main { public static void main(String[] args) throws InterruptedException { Logger log = Logger.getLogger(Main.class); int i = 0; new StatUtils().start(); while (true) { log.trace("trace : test"); log.debug("debug : test"); log.info("info : test"); log.error("error : test"); i++; Thread.sleep(1000); } } }
Client的配置文件
log4j.rootLogger=debug,socket log4j.appender.socket=org.apache.log4j.net.SocketAppender log4j.appender.socket.RemoteHost=127.0.0.1 log4j.appender.socket.Port=4560 log4j.appender.socket.ReconnectionDelay=1000 log4j.appender.socket.LocationInfo=true log4j.appender.socket.layout=org.apache.log4j.PatternLayout log4j.appender.socket.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c - %m%n
服务器的启动命令很简单:
java -cp .\bin;.\log4j-1.2.16.jar org.apache.log4j.net.SocketServer 4560 ./log4jserver.properties ./logs
服务器配置文件
log4j.rootCategory=debug, console log4j.appender.console=org.apache.log4j.ConsoleAppender log4j.appender.console.layout=org.apache.log4j.PatternLayout log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c - %m -%l -%L -%M -%F %n