栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java 使用syslog4j编写syslog服务器和客户端

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java 使用syslog4j编写syslog服务器和客户端

import java.net.SocketAddress;
import org.graylog2.syslog4j.SyslogConstants;
import org.graylog2.syslog4j.server.SyslogServer;
import org.graylog2.syslog4j.server.SyslogServerConfigIF;
import org.graylog2.syslog4j.server.SyslogServerEventIF;
import org.graylog2.syslog4j.server.SyslogServerIF;
import org.graylog2.syslog4j.server.SyslogServerSessionEventHandlerIF;

public class MySyslogServer {
	private static final String HOST = "127.0.0.1";
	private static final int PORT = 514;

	private void receiveSyslogMessage() throws InterruptedException {
		SyslogServerIF server = SyslogServer.getInstance(SyslogConstants.UDP);
		SyslogServerConfigIF config = server.getConfig();
		config.setHost(HOST);
		config.setPort(PORT);
		config.addEventHandler(new SyslogServerSessionEventHandlerIF() {
			@Override
			public Object sessionOpened(SyslogServerIF syslogServerIF, SocketAddress socketAddress) {
				return null;
			}

			@Override
			public void event(Object o, SyslogServerIF syslogServerIF, SocketAddress socketAddress,
					SyslogServerEventIF syslogServerEventIF) {
				System.out.println("receive from:" + socketAddress + "tmessage" + syslogServerEventIF.getMessage());
			}

			@Override
			public void exception(Object o, SyslogServerIF syslogServerIF, SocketAddress socketAddress, Exception e) {

			}

			@Override
			public void sessionClosed(Object o, SyslogServerIF syslogServerIF, SocketAddress socketAddress, boolean b) {

			}

			@Override
			public void initialize(SyslogServerIF syslogServerIF) {

			}

			@Override
			public void destroy(SyslogServerIF syslogServerIF) {

			}
		});
		SyslogServer.getThreadedInstance(SyslogConstants.UDP);
		Thread.sleep(100000);
	}

	public static void main(String[] args) throws InterruptedException {
		new MySyslogServer().receiveSyslogMessage();
	}
}
import java.net.URLDecoder;
import java.util.Date;
import org.graylog2.syslog4j.Syslog;
import org.graylog2.syslog4j.SyslogIF;

public class MySyslogClient {
	public static void main(String[] args) {
		try {
			// 获取syslog的操作类,使用udp协议。syslog支持"udp", "tcp", "unix_syslog", "unix_socket"协议
			SyslogIF syslog = Syslog.getInstance("udp");
			// 设置syslog服务器端地址
			syslog.getConfig().setHost("127.0.0.1");
			// 设置syslog接收端口,默认514
			syslog.getConfig().setPort(514);
			// 拼接syslog日志,这个日志是自己定义的,通常我们定义成符合公司规范的格式就行,方便查询。例如 操作时间:2014年8月1日 操作者ID:张三
			// 等。信息就是一个字符串。
			StringBuffer buffer = new StringBuffer();
			buffer.append("操作时间:" + new Date().toString().substring(4, 20) + ";");
			buffer.append("操作者ID:" + "张三" + ";");
			buffer.append("操作时间:" + new Date() + ";");
			buffer.append("日志类别:" + "22" + ";");
			buffer.append("执行动作:" + "动作" + ";");
			buffer.append("备注:" + "备注");
			
			syslog.log(0, URLDecoder.decode(buffer.toString(), "utf-8"));
		} catch (Exception e) {
		}
	}

}
import org.apache.logging.log4j.*;

public class TestLog4j {

	private static final Logger logger = LogManager.getLogger(TestLog4j.class);

	public static void main(String[] args) throws Exception {
		logger.debug("Mydebug message");
		logger.info("Myinfo message");
		logger.warn("Mywarn message");
		logger.error("Myerror message");
		try {
			int i = 1 / 0;
		} catch (Exception exc) {
			logger.error("error message with stack trace", new Exception("I forced this exception", exc));
		}
		logger.fatal("fatal message");
	}

}




    
      
    
    
    
    
            
                  
                  
                  
                  
            
                        
    
            
    
    
          
                
            



    
      
      
    
    
  
receive from:/127.0.0.1:54111	message2021-10-28T15:24:23.257+08:00 hostname testlog4j 15188 Audit [testlog4j@18060 category="TestLog4j" exception="" priority="WARN" thread="main"] Mywarn message
receive from:/127.0.0.1:54111	message2021-10-28T15:24:23.266+08:00 hostname testlog4j 15188 Audit [testlog4j@18060 category="TestLog4j" exception="" priority="ERROR" thread="main"] Myerror message
receive from:/127.0.0.1:54111	message2021-10-28T15:24:23.267+08:00 hostname testlog4j 15188 Audit [testlog4j@18060 category="TestLog4j" exception="java.lang.Exception: I forced this exception
	at TestLog4j.main(TestLog4j.java:15)
Caused by: java.lang.ArithmeticException: / by zero
	at TestLog4j.main(TestLog4j.java:13)
" priority="ERROR" thread="main"] error message with stack trace
receive from:/127.0.0.1:54111	message2021-10-28T15:24:23.301+08:00 hostname testlog4j 15188 Audit [testlog4j@18060 category="TestLog4j" exception="" priority="FATAL" thread="main"] fatal message

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/358529.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号