syslog4j消息内遇中文,消息内容不完整解决办法

由于我们系统采用maven管理,使用syslog4j时,maven在线仓库里只有syslog4j0.9.30版本的jar包,所以就只用了 syslog4j.0.9.30.jar 

实际测试发现,当消息内容含有中文时,消息就会发送截断,变得不完整,即使消息内容进行了utf-8编码依然存在同样这个问题

替换成最新的syslog4j0.9.46 就不会发生这个现象。

 

这里就需要手动引入第三方jar包,到maven中。

 

Java代码   收藏代码
  1. <dependency>  
  2.     <groupId>org.syslog4j</groupId>  
  3.     <artifactId>syslog4j</artifactId>  
  4.     <version>0.9.46</version>  
  5.     <scope>system</scope>  
  6.     <systemPath>${project.basedir}/webapp/WEB-INF/lib/syslog4j-0.9.46.jar</systemPath>  
  7. </dependency>  

 

 

其中 涉及到了maven的内置属性。

内置属性(Maven预定义,用户可以直接使用)

${basedir}表示项目根目录,即包含pom.xml文件的目录;

${version}表示项目版本;

${project.basedir}同${basedir};

${project.baseUri}表示项目文件地址;

${maven.build.timestamp}表示项目构件开始时间;

${maven.build.timestamp.format}表示属性${maven.build.timestamp}的展示格式,默认值为yyyyMMdd-HHmm,可自定义其格式,其类型可参考java.text.SimpleDateFormat。

 

Maven的<dependency>中还引入了<scope>,它主要管理依赖的部署。目前<scope>可以使用5个值 


    * compile,缺省值,适用于所有阶段,会随着项目一起发布。 
    * provided,类似compile,期望JDK、容器或使用者会提供这个依赖。如servlet.jar。 
    * runtime,只在运行时使用,如JDBC驱动,适用运行和测试阶段。 
    * test,只在测试时使用,用于编译和运行测试代码。不会随项目发布。 
    * system,类似provided,需要显式提供包含依赖的jar,Maven不会在Repository中查找它。 

当配置了<scope>为system后,需要对systemPath进行配置,直接指定到jar包存放位置即可。

 

 

ps:对于syslog 消息头中主机名的设置,syslog4j.0.9.46可以通过

SyslogIF syslog = Syslog.getInstance("udp");   

syslog.getConfig().setLocalName("XXXX");

直接进行设置

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值