Log4j 로그 집중 관리

최근 에 이런 문제 가 발생 했 습 니 다. 회사 온라인 에는 중, 일, 미 세 가지 언어 가 있 는 프로젝트 가 있 습 니 다. 서로 다른 세 대의 서버 에 속 하고 모든 항목 이 두 노드 설정 을 통 해 로그 의 통일 관 리 를 실현 하려 고 합 니 다. 모든 로 그 를 같은 서버 에 입력 한 후에 통일 적 으로 기록 하고 관리 하 며 분석 하려 고 합 니 다.최종 적 으로 log4j 의 SocketAppender 를 통 해 이 루어 졌 다.
1. 클 라 이언 트 의 설정:
클 라 이언 트 의 설정 은 비교적 간단 합 니 다. log4j 에 게 원 격 서버 의 어느 포트 를 감청 해 야 하 는 지 알려 주면 됩 니 다.log4j. properties 에 직접 설정 하면 됩 니 다.
#linux           
LOG_PATH = /data/ligang/
#windows           
#LOG_PATH = e:/ligang/
#      LOG_PATH Linux      
 
#      
sqlLogFormat = %d{yyyy-MM-dd HH:mm:ss}- %p %t %c (line:%L) : %n%m%n

#SQL-LOG     
sqlMaxFileSize = 5MB
 
#SQL-LOG      
sqlMaxBackupIndex=100
#--------------------------------------------------------------
#Log4j Client Configure , Log4j      

#SQLLog       
sqlServerThreshold = INFO
#Remote Server IP    Log   IP
serverIP = 172.17.3.135
#Remote Server Port   Log      
serverPort = 12444
 
#The LocationInfo option takes a boolean value.
#If true, the information sent to the remote host will include location information. 
#        
locationInfo = true
#The ReconnectionDelay option takes a positive integer representing
#the number of milliseconds to wait between each failed connection attempt to the server.
#Setting this option to zero turns off reconnection capability.
#10seconds
 
#         ,10       。   0 ,      
reconnectionDelay = 10000
#--------------------------------------------------------------
#root log root   ,         rootCategory。            additivity = false
log4j.rootCategory=INFO, console, rootLog
#                   
log4j.appender.console=org.apache.log4j.ConsoleAppender
#            
log4j.appender.console.layout=org.apache.log4j.PatternLayout
#              
log4j.appender.console.layout.ConversionPattern= %p - [%t] %C.%M : %m%n
 
#                   
# RollingFileAppender        。 DailyRollingFileAppender      。          .
log4j.appender.rootLog=org.apache.log4j.RollingFileAppender
#       
log4j.appender.rootLog.File=${LOG_PATH}root-Log/root-log.log
#   
log4j.appender.rootLog.layout=org.apache.log4j.PatternLayout
#         ,      C        。
log4j.appender.rootLog.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss}- %p %t %c (line:%L) - %m%n%n
#       
log4j.appender.rootLog.MaxFileSize=102400KB
#          
log4j.appender.rootLog.MaxBackupIndex=20
 
#    com.ptengine   DEBUG           
log4j.logger.com.ptengine=INFO
#        WARN            
log4j.logger.com.opensymphony.oscache=WARN
log4j.logger.org.apache.commons=WARN
log4j.logger.org.apache.struts=WARN
log4j.logger.org.springframework=WARN
log4j.logger.org.apache.velocity=WARN
#--------------------------------------------------------------
#allSQL log           insert、update、delete SQL  。
#         ,         SQL         。
#--------------------------------------------------------------
#   userSQL log
# user -->     。          Log  。         。
# userSQL     ,userServer userlog log4j      
log4j.logger.user = INFO,userSQL,userServer
#   root     
log4j.additivity.user = false
#  userSQL              
log4j.appender.userSQL=org.apache.log4j.RollingFileAppender
#        ,                user-SQL/user-SQL-log.log
log4j.appender.userSQL.File=${LOG_PATH}table/user-SQL/user-SQL-log.log
#           
log4j.appender.userSQL.layout=org.apache.log4j.PatternLayout
#           
log4j.appender.userSQL.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss}- %p %t %c (line:%L) : %n%m%n
#       ,  5120kb ,               
log4j.appender.userSQL.MaxFileSize=5120KB
#          
log4j.appender.userSQL.MaxBackupIndex=100

#Log4j        
log4j.appender.userServer=org.apache.log4j.net.SocketAppender
log4j.appender.userServer.RemoteHost=${serverIP}
log4j.appender.userServer.Port=${serverPort}
log4j.appender.userServer.LocationInfo=${locationInfo}
log4j.appender.userServer.ReconnectionDelay=${reconnectionDelay}
log4j.appender.userServer.Threshold = ${sqlServerThreshold}

#         user     

2. 로그 서버 설정:
로그 서버 는 자바 프로 세 스 를 따로 시작 하여 클 라 이언 트 가 자신 에 게 보 낸 socket 요청 을 받 아야 합 니 다.Log4j 는 org. apache. log4j. net. Socketserver 류 를 제공 하여 main 함 수 를 직접 실행 하면 됩 니 다.배경 에서 계속 실행 해 야 하기 때문에 startup, shutdown 두 개의 셸 스 크 립 트 를 사 용 했 습 니 다.log4j - server - 12444 를 / opt 디 렉 터 리 에 업로드 하고 압축 을 풀 수 있 습 니 다.실행 / opt / log4j - server - 12444 / startup. sh 서비스 시작.실행 / opt / log4j - server - 12444 / shutdown. sh 서 비 스 를 정지 하 다.catalina. sh 파일:
#!/bin/bash 
#          
basepath=`dirname $0`"/"
#   
LISTEN_PORT=12444
#   log4j     
SERVER_CONFIG="$basepath"conf/log4jserver.properties
#       
CLIENT_CONFIG_DIR="$basepath"conf/lcf/
   
#Java       (classes      ) 
APP_HOME="$basepath"lib
#     Java   (main   ) 
APP_MAINCLASS=org.apache.log4j.net.SocketServer 
    
#     classpath  ,    lib      jar 
CLASSPATH=$APP_HOME/log4j-1.2.17.jar
  
#JDK     
JAVA_HOME=/opt/jdk1.6.0_25
#              
RUNNING_USER=ligang
    
#java        
JAVA_OPTS="-ms512m -mx512m -Xmn256m -Djava.awt.headless=true -XX:MaxPermSize=128m"

log4j 의 서버 도 서버 세그먼트 의 프로필 이 필요 합 니 다. 여 기 는 conf / log4jserver. properties 를 사용 합 니 다. 그 중에서 일부 설정 은 클 라 이언 트 의 프로필 과 대동소이 합 니 다 (즉, 웹 프로젝트 의 log4j. properties). 주로 서버 측 에서 클 라 이언 트 의 log 를 설정 합 니 다.
설정 파일 은 conf / lcf / generic. lcf 에 있 습 니 다. 웹 과 마찬가지 로 루트 루트 로그 가 없습니다.
     
로그 의 설정 이름 은 웹 과 일치 해 야 합 니 다. 그렇지 않 으 면 서버 의 로 그 를 인쇄 할 수 없습니다.
     
웹 에 SQL 표 로 그 를 새로 추가 할 때 서버 의 generic. lcf 에 추가 해 야 합 니 다.
3. 자바 웹 엔 드:
org. apache. comons. logging. Log 와 org. apache. comons. logging. LogFactory 를 통 해 로그 의 입력 을 제어 합 니 다.

좋은 웹페이지 즐겨찾기