使用java向rsyslog发送日志
来源:互联网 发布:爱奇艺会员 淘宝 编辑:程序博客网 时间:2024/05/16 03:50
- 补充rsyslog的配置方法
- 一基本使用方法
- 二不使用配置文件
补充rsyslog的配置方法
(一)基本使用方法
1、开通rsyslog远程UDP访问
vi /etc/rsyslog.conf
将下面两段前面的#号去掉
#$ModLoad imudp #$UDPServerRun 514
如果原来没有话则加上这2行
2,建立存放log的文件地址
vi /etc/rsyslog.conf
加入以下两段
local2.info /var/log/login_info.log local2.debug /var/log/login_debug.log
3,开通防火墙
将UDP端口514对外开放出来
4,重启rsyslog
service rsyslog restart
5,log4j的配置
将日志同时输出到syslog和console
log4j.rootLogger =ALL,systemOut,SYSLOGlog4j.appender.systemOut = org.apache.log4j.ConsoleAppender log4j.appender.systemOut.layout = org.apache.log4j.PatternLayout log4j.appender.systemOut.layout.ConversionPattern = [%-5p][%-22d{yyyy/MM/dd HH:mm:ssS}][%l]%n%m%n log4j.appender.systemOut.Threshold = DEBUG log4j.appender.systemOut.ImmediateFlush = TRUE log4j.appender.systemOut.Target = System.out log4j.appender.SYSLOG=org.apache.log4j.net.SyslogAppender log4j.appender.SYSLOG.syslogHost=192.168.172.114log4j.appender.syslog.Threshold=DEBUG log4j.appender.SYSLOG.layout=org.apache.log4j.PatternLayout log4j.appender.SYSLOG.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n log4j.appender.SYSLOG.Header=truelog4j.appender.SYSLOG.Facility=local2
6、写java代码
package com.lujinhong.demo.log4j;import org.apache.log4j.Logger;public class Log4jDemo { private static Logger LOG = Logger.getLogger(Log4jDemo. class ); public static void main(String[] args) { //System.setProperty("LOGDIR","/Users/liaoliuqing/Downloads/"); LOG.info("lujinhong !!INFO MESSAGE!!"); LOG.error("ERROR MESSAGE!!!!"); LOG.debug("DEBUG MESSAGE!"); LOG.warn("WARN MESSAGE!!"); new MyJavaClass().adder(2, 3); }}
7,运行应用程序,可以在/var/log下看到不同级别的日志信息,如login_info.log和login_debug.log
(二)不使用配置文件
有时候,log4j的配置文件会互相覆盖,真的很烦,因此可以将配置写到代码中去
1、定义一个单例类,将相关配置写入:
package com.lujinhong.demo.log4j;import org.apache.log4j.Level;import org.apache.log4j.Logger;import org.apache.log4j.PatternLayout;import org.apache.log4j.net.SyslogAppender;public class MySysLogger { //日志级别 private static Level level = Level.INFO; private static Logger LOG = null; public static synchronized Logger getInstance() { if (LOG == null) { new MySysLogger(); } return LOG; } private MySysLogger() { LOG = Logger.getRootLogger(); LOG.setLevel(level); SyslogAppender appender = new SyslogAppender(); appender.setName("ma30"); appender.setSyslogHost("192.168.1.100"); appender.setLayout(new PatternLayout( "%r [%t] %-5p %c%x: - %m%n")); appender.setHeader(true); appender.setFacility("local7"); //appender.setWriter(new PrintWriter(System.out)); //如果是文件是RollingFileAppender:setWriter(new PrintWriter(new File("F:/test/_debug.log"))); LOG.addAppender(appender); }}
2、在需要日志输出的类中添加以下语句
private static Logger LOG = MySysLogger.getInstance();
然后就可以使用LOG
变量进行日志输出了
吐槽几句,log4j的坑啊….
(1)CLASSPATH中不能有多个log4j的版本本,否则有有奇形怪状的NoSuchMethod, NoSuchFiled, NoClassDefineFound等异常。明明是太多了,还告诉你没有
(2)与slf4j的搭建,必须版本一致,如slf4j-1.7.2对应log4j-1.2.17
(3)配置文件啊,如果你引用的第三方包有log4j.properties,而又没有提供给你编辑,那恭喜你,慢慢调吧。把log4j的配置写入代码吧,不要用配置文件了
0 0
- 使用java向rsyslog发送日志
- Tutorial: 使用rsyslog向kafka, elasticsearch推送日志
- Flume采集rsyslog发送的audit日志
- nginx 1.4.7 发送日志到rsyslog
- 用python socket发送rsyslog日志
- rsyslog日志服务器的配置步骤( 远程发送日志 )
- Linux环境下使用rsyslog管理日志
- 利用Rsyslog向ElasticSearch推送nginx access日志
- rsyslog 直接kill进程,在重新启动会全部发送日志
- 使用java向linux服务器端发送信号
- 使用Java程序向手机发送短信
- rsyslog使用
- rsyslog 直接读取日志,当日志截断后,不会继续发送
- Rsyslog 日志服务器
- 日志服务器Rsyslog
- rsyslog日志系统
- rsyslog 传输日志
- rsyslog 传输mysql 日志
- POJ 3311 Hie with the Pie(状态压缩DP+Floyd)
- 设置uitextview边框
- SQL2008 清空数据库中所有表数据的方法
- 错误提示:连接 built-in.o 提示 undefined reference to
- c#读取数据库server sql
- 使用java向rsyslog发送日志
- 轻松java学习之路2
- pi的刷机配置
- 常见的HTTP状态码汇总
- C++ 全局变量和局部变量
- POJ2828--Buy Tickets(线段树,单点更新)
- Servlet之生命周期【入门版(初学者必看)】
- 多线程(停止线程)
- Axsure用例交互条件设置