Axis2学习总结(3)在客户端配置log4j监控soap消息
2016-05-23 10:56
633 查看
先编写log4j自定义appdener,代码如下
再配置log4j.properties
说明:
log4j.rootLogger//==配置跟logger日志级别及日志输出位置,如:
log4j.rootLogger=ERROR,file,stdout表示,日志级别为ERROR的日志输出到控制台和file中。
但如果日志要分别输出到不同的文件中,如根据功能模块输出到不同文件,则无需将不同位置在此设置,否则在无法按照功能模块输出日志,导致不同文件记录相同的日志。
log4j.additivity是子Logger是否继承父Logger 的 输出源(appender)的标志位。具体说,默认情况下子Logger会继承父Logger的appender,也就是说子Logger 会在父Logger的appender里输出。若是additivity设为false,则子Logger只会在自己的appender里输出,而不会在父Logger的appender里输出。
配置完成就可以监控soap消息了。
package com.appender; import java.io.FileWriter; import java.io.IOException; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.apache.log4j.AppenderSkeleton; import org.apache.log4j.helpers.LogLog; import org.apache.log4j.spi.LoggingEvent; public class SoapAppender extends AppenderSkeleton{ private String file = ""; public void setFile(String filedata){ file = filedata; } public String getFile(){ return file; } @Override public void close() { // TODO Auto-generated method stub } @Override public boolean requiresLayout() { // TODO Auto-generated method stub return true; } @Override protected void append(LoggingEvent event) { // TODO Auto-generated method stub Object obdata = hexToString(event.getMessage().toString()); LoggingEvent soaplogevent = new LoggingEvent(event.getFQNOfLoggerClass(), event.getLogger(), event.getLevel(), obdata, new Throwable()); System.out.println(this.getLayout().format(soaplogevent)); // System.out.println(hexToString(event.getMessage().toString())); writeDataToLogFile(obdata.toString()); } // 转化十六进制编码为字符串 public static String toStringHex(String s) { byte[] baKeyword = new byte[s.length()/2]; for(int i = 0; i < baKeyword.length; i++) { try { baKeyword[i] = (byte)(0xff & Integer.parseInt(s.substring(i*2, i*2+2),16)); } catch(Exception e) { e.printStackTrace(); } } try { s = new String(baKeyword, "utf-8");//UTF-16le:Not } catch (Exception e1) { e1.printStackTrace(); } return s; } //将字符串中的十六进制字节转换为字符串 public static String hexToString(String data){ //默认编码是utf-8,即一个非常规字符用3个十六进制字节表示 String regex = "\\[0x(\\w\\w)\\]\\[0x(\\w\\w)\\]\\[0x(\\w\\w)\\]"; Pattern pattern = Pattern.compile(regex); Matcher matcher=pattern.matcher(data); StringBuffer nedata = new StringBuffer(); while(matcher.find()){ String tempdata = toStringHex(matcher.group(1) + matcher.group(2) + matcher.group(3)); matcher.appendReplacement(nedata, tempdata); } matcher.appendTail(nedata); if(nedata.toString().length() <= 0){ return data; }else{ return nedata.toString(); } } public void writeDataToLogFile(String filedata){ if(file.isEmpty()){ LogLog.debug("file is not exit!"); }else{ try{ FileWriter fwio = new FileWriter(file, true); fwio.write(filedata); fwio.close(); }catch(IOException e){ e.printStackTrace(); } } } }
再配置log4j.properties
<span style="font-size:14px;"># Set root category priority to INFO and its only appender to CONSOLE. log4j.rootCategory=INFO, CONSOLE log4j.logger.httpclient.wire.content=DEBUG,axis2 # CONSOLE is set to be a ConsoleAppender using a PatternLayout. log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout log4j.appender.CONSOLE.layout.ConversionPattern=[%p] -%c- %m%n log4j.appender.axis2=com.appender.SoapAppender log4j.appender.axis2.layout=org.apache.log4j.PatternLayout log4j.appender.axis2.layout.ConversionPattern=[%p] %m%n log4j.additivity.httpclient.wire.content=false</span>
说明:
log4j.rootLogger//==配置跟logger日志级别及日志输出位置,如:
log4j.rootLogger=ERROR,file,stdout表示,日志级别为ERROR的日志输出到控制台和file中。
但如果日志要分别输出到不同的文件中,如根据功能模块输出到不同文件,则无需将不同位置在此设置,否则在无法按照功能模块输出日志,导致不同文件记录相同的日志。
log4j.additivity是子Logger是否继承父Logger 的 输出源(appender)的标志位。具体说,默认情况下子Logger会继承父Logger的appender,也就是说子Logger 会在父Logger的appender里输出。若是additivity设为false,则子Logger只会在自己的appender里输出,而不会在父Logger的appender里输出。
配置完成就可以监控soap消息了。
相关文章推荐
- Ubuntu下Nginx简单使用
- Apache三种MPM分析: Prefork、Worker和Event
- linux:SUID、SGID详解
- CentOS、Ubuntu、Debian三个linux比较异同
- linux读取文件
- Linux(Debian)软件安装
- hadoop text cat head使用
- Linux-Find命令
- ESXI系统引导盘
- cocoPod 基础知识集成
- 记录一次tomcat排错过程 推荐
- linux inode已满解决方法
- linux学习精华帖
- Centos最小化安装后联网配置
- nginx整理
- shell把nginx执行php并且是200的状态找出来
- hadoop fs下命令说明
- 在Docker下搭建Spark+HDFS集群
- windows 进程监控
- Sublime Text 3 常用插件