├── .classpath ├── .project ├── README.md ├── bin ├── restart_server.bat ├── restart_server.sh └── stop-server.sh ├── conf ├── generic.lcf └── log4jserver.properties ├── doc └── log4j.properties └── lib ├── commons-logging-1.1.1.jar └── log4j-1.2.15.jar /.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | log4server 4 | 5 | 6 | 7 | 8 | 9 | org.eclipse.jdt.core.javabuilder 10 | 11 | 12 | 13 | 14 | 15 | org.eclipse.jdt.core.javanature 16 | 17 | 18 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | log4server 2 | =============== 3 | 4 | log4server是个简单的日志收集服务,是使用log4j的SocketServer,用来收集分布式系统中的日志,方便集中日志查询、分析 5 | 6 | 1.日志服务启动脚本bin/restart_server.sh
7 | 主要配置是conf/generic.lcf
8 | 第一行是指定日志存储路径
9 | 第二段是配置全局日志存储,所有接收到的日志都会在这边输出
10 | 第三、四段是配置局部日志存储,可以细分指定一个包输出到一个日志文件,用来区分项目挺方便 11 | log4j.logger.org.langke.core=INFO,rest-nettyserver
12 | 这里的包名跟项目包名对上就可以了
13 | 14 | 2.客户端配置参考:doc/log4j.properties
15 | 主要就是把下列配置加到各个服务器的log4j.properties
16 | rootLogger加下SOCKET_CLIENT 17 |
18 | log4j.rootLogger=INFO,SOCKET_CLIENT
19 | 
20 | #remote logging
21 | log4j.appender.SOCKET_CLIENT = org.apache.log4j.net.SocketAppender
22 | log4j.appender.SOCKET_CLIENT.RemoteHost = log4server
23 | log4j.appender.SOCKET_CLIENT.Port = 5001
24 | log4j.appender.SOCKET_CLIENT.LocationInfo = true
25 | 
26 | 这里log4server是指向log4server服务器host,需要配置hosts文件,或者直接用ip -------------------------------------------------------------------------------- /bin/restart_server.bat: -------------------------------------------------------------------------------- 1 | @setlocal enabledelayedexpansion 2 | @set classpath=. 3 | @for %%c in (..\lib\*.jar) do @set classpath=!classpath!;%%c 4 | @for %%c in (..\bin\*.jar) do @set classpath=!classpath!;%%c 5 | @set DEFAULT_OPTS=-server -Xms3M -Xmx10M 6 | 7 | # process 8 | @set PNAME=org.apache.log4j.net.SocketServer 9 | @set PORT=5001 10 | @set configFile=../conf/log4jserver.properties 11 | @set configDir=../conf/ 12 | 13 | java -cp "%classpath%" %DEFAULT_OPTS% %PNAME% %PORT% %configFile% %configDir% %* 14 | -------------------------------------------------------------------------------- /bin/restart_server.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | #if [ "`whoami`" != "root" ] ; then 3 | # echo 4 | # echo Must start use root 5 | # echo 6 | # exit 1 7 | #fi 8 | 9 | DIRNAME=/usr/bin/dirname 10 | BASE_PATH=`$DIRNAME $0` 11 | cd $BASE_PATH 12 | echo `pwd` 13 | 14 | #export PATH=/usr/local/jdk1.6.0_26/bin:$PATH 15 | 16 | for i in ./*.jar; do 17 | CLASSPATH=$i:$CLASSPATH; 18 | done 19 | 20 | for j in ../lib/*.jar; do 21 | CLASSPATH=$j:$CLASSPATH; 22 | done 23 | 24 | SEARCH_VER=9 25 | DEFAULT_OPTS="-server -Xms3M -Xmx10M -Xss128k" 26 | DEFAULT_OPTS="$DEFAULT_OPTS -Dcom.sun.management.jmxremote.port=89${SEARCH_VER}6" 27 | DEFAULT_OPTS="$DEFAULT_OPTS -Dcom.sun.management.jmxremote.authenticate=false" 28 | DEFAULT_OPTS="$DEFAULT_OPTS -Dcom.sun.management.jmxremote.ssl=false" 29 | DEBUG_INFO=" -Xdebug -Xrunjdwp:transport=dt_socket,address=1527${SEARCH_VER},server=y,suspend=n " 30 | DEBUG="" 31 | case $1 in 32 | "debug") DEBUG=${DEBUG_INFO};; 33 | esac; 34 | shift; 35 | PNAME=org.apache.log4j.net.SocketServer 36 | if test $(pgrep -f ${PNAME}|wc -l) -ne 0;then 37 | echo "closing...... $PNAME" 38 | pkill -f $PNAME 39 | sleep 2 40 | fi 41 | 42 | 43 | # process 44 | PORT=5001 45 | configFile=../conf/log4jserver.properties 46 | configDir=../conf/ 47 | CMD="java -cp $CLASSPATH ${DEBUG} $DEFAULT_OPTS ${PNAME} ${PORT} ${configFile} ${configDir} > /dev/null 2>&1 &" 48 | 49 | eval $CMD 50 | echo "start ~~ $CMD" 51 | echo "as pid:`pgrep -f ${PNAME}`" 52 | 53 | -------------------------------------------------------------------------------- /bin/stop-server.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | DIRNAME=/usr/bin/dirname 4 | BASE_PATH=`$DIRNAME $0` 5 | cd $BASE_PATH 6 | echo `pwd` 7 | 8 | #export PATH=/usr/local/jdk1.6.0_26/bin:$PATH 9 | 10 | PNAME=org.apache.log4j.net.SocketServer 11 | if test $(pgrep -f ${PNAME}|wc -l) -ne 0;then 12 | echo "closing...... $PNAME" 13 | pkill -f $PNAME 14 | sleep 2 15 | fi 16 | 17 | 18 | # process 19 | PORT=5001 20 | echo `ps aux|grep ${PNAME}` 21 | 22 | -------------------------------------------------------------------------------- /conf/generic.lcf: -------------------------------------------------------------------------------- 1 | log.dir=../logs 2 | 3 | log4j.rootLogger=INFO,globalfile 4 | #log4j.rootCategory=INFO,globalfile 5 | log4j.appender.globalfile=org.apache.log4j.DailyRollingFileAppender 6 | log4j.appender.globalfile.DatePattern='.'yyyy-MM-dd 7 | log4j.appender.globalfile.encoding=UTF-8 8 | log4j.appender.globalfile.File=${log.dir}/global.log 9 | log4j.appender.globalfile.layout=org.apache.log4j.PatternLayout 10 | log4j.appender.globalfile.layout.ConversionPattern=%d{ISO8601} %p %c: %m%n 11 | 12 | log4j.logger.org.langke.core=INFO,rest-nettyserver 13 | log4j.appender.rest-nettyserver=org.apache.log4j.DailyRollingFileAppender 14 | log4j.appender.rest-nettyserver.DatePattern='.'yyyy-MM-dd 15 | log4j.appender.rest-nettyserver.encoding=UTF-8 16 | log4j.appender.rest-nettyserver.File=${log.dir}/rest-nettyserver.log 17 | log4j.appender.rest-nettyserver.layout=org.apache.log4j.PatternLayout 18 | log4j.appender.rest-nettyserver.layout.ConversionPattern=%d{ISO8601} %p %c: %m%n 19 | 20 | log4j.logger.org.langke.user=INFO,user 21 | log4j.appender.user=org.apache.log4j.DailyRollingFileAppender 22 | log4j.appender.user.DatePattern='.'yyyy-MM-dd 23 | log4j.appender.user.encoding=UTF-8 24 | log4j.appender.user.File=${log.dir}/user.log 25 | log4j.appender.user.layout=org.apache.log4j.PatternLayout 26 | log4j.appender.user.layout.ConversionPattern=%d{ISO8601} %p %c: %m%n 27 | -------------------------------------------------------------------------------- /conf/log4jserver.properties: -------------------------------------------------------------------------------- 1 | logServer.log.dir=../logs 2 | logServer.log.file=log4jserver.log 3 | 4 | log4j.logger.org.apache.log4j.net.SocketServer=DEBUG,serverFile 5 | log4j.additivity.org.apache.log4j.net.SocketServer=false 6 | log4j.appender.serverFile=org.apache.log4j.RollingFileAppender 7 | #log4j.appender.serverFile.DatePattern='.'yyyy-MM-dd 8 | log4j.appender.serverFile.encoding=UTF-8 9 | log4j.appender.serverFile.File=${logServer.log.dir}/${logServer.log.file} 10 | log4j.appender.serverFile.layout=org.apache.log4j.PatternLayout 11 | log4j.appender.serverFile.layout.ConversionPattern=%d{ISO8601} %p %c: %m%n 12 | -------------------------------------------------------------------------------- /doc/log4j.properties: -------------------------------------------------------------------------------- 1 | ############################################################ 2 | # Define some default values that can be overridden by system properties 3 | log.dir=../logs 4 | log.file=rest-nettyserver.log 5 | 6 | log4j.rootLogger=INFO,console,DRFA,SOCKET_CLIENT 7 | 8 | # Logging Threshold 9 | log4j.threshhold=ALL 10 | 11 | # Custom Logging levels 12 | 13 | log4j.logger.org.apache.hadoop=INFO 14 | #remote logging 15 | log4j.appender.SOCKET_CLIENT = org.apache.log4j.net.SocketAppender 16 | log4j.appender.SOCKET_CLIENT.RemoteHost = 10.10.10.10 17 | log4j.appender.SOCKET_CLIENT.Port = 5001 18 | log4j.appender.SOCKET_CLIENT.LocationInfo = true 19 | # 20 | # Daily Rolling File Appender 21 | # 22 | log4j.appender.DRFA=org.apache.log4j.DailyRollingFileAppender 23 | log4j.appender.DRFA.File=${log.dir}/${log.file} 24 | 25 | # Rollver at midnight 26 | log4j.appender.DRFA.DatePattern=.yyyy-MM-dd 27 | 28 | # 30-day backup 29 | #log4j.appender.DRFA.MaxBackupIndex=30 30 | log4j.appender.DRFA.layout=org.apache.log4j.PatternLayout 31 | 32 | # Pattern format: Date LogLevel LoggerName LogMessage 33 | log4j.appender.DRFA.layout.ConversionPattern=%d{ISO8601} %p %c: %m%n 34 | 35 | # Debugging Pattern format 36 | #log4j.appender.DRFA.layout.ConversionPattern=%d{ISO8601} %-5p %c{2} (%F:%M(%L)) - %m%n 37 | 38 | 39 | # 40 | # console 41 | # Add "console" to rootlogger above if you want to use this 42 | # 43 | log4j.appender.console=org.apache.log4j.ConsoleAppender 44 | log4j.appender.console.target=System.err 45 | log4j.appender.console.layout=org.apache.log4j.PatternLayout 46 | log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %p %c{2}: %m%n 47 | -------------------------------------------------------------------------------- /lib/commons-logging-1.1.1.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/langke93/log4server/5c99083da610fb2ff36beb8b5e8999a49eda64bb/lib/commons-logging-1.1.1.jar -------------------------------------------------------------------------------- /lib/log4j-1.2.15.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/langke93/log4server/5c99083da610fb2ff36beb8b5e8999a49eda64bb/lib/log4j-1.2.15.jar --------------------------------------------------------------------------------