Log4j 2.0在具体解释发展先进的使用—SocketAppender远程输出(五岁以下儿童)
Log4j2的Appenders充分考虑输出日志事件、包装和过滤可以被转发,它包含的主要输出到本地文件、输出到远程主机,
文件包、注射。而且,根据该日志文件的时间点、自己主动文件大小的储存条件。
例如,要记录多个不同来源汇集,您可以使用FlumeAppender。想要在LogEvent中注入信息。
能够用RewriteAppender。想要让系统依照设定的时间间隔自己主动封存日志信息。能够用RollingFileAppender
(每隔一定时间自己主动保存一份新增的日志文件,并依照时间戳等指定格式命名);当产生安全级别达ERROR或FATAL的LogEvent时。
给维护人员发送邮件可用SMTPAppender。希望将日志信息写到远程主机的,可用SocketAppender;希望可以依照RFC5424格式向远程主机发送日志信息,
可用SyslogAppender等等。
SocketAppender
将log event输出到一个远程server上(需指定server名和port号),数据能够以随意指定的格式经由TCP或UDP协议发送。
SocketAppender中比較重要的參数有:
⑴ host,String。指定server的主机名。(必需)
⑵ immediateFlush,boolean,是否马上flush。还是等待缓存到一定大小后在flush。
⑶ layout。Layout,log event输出的格式。
⑷ port。integer,远程server坚挺log event的应用的端口号。
⑸ protocol,String,发送log event所使用的协议。"TCP" 或"UDP"。
⑹ reconnectionDelay,integer,当连接断开时,延迟等待的ms数。
⑺ name,String 。Appender的名称。
⑻ protocol,String,通讯协议 默认TCP。
可选值 "TCP" (default), "SSL" or "UDP".
⑼ SSL。SslConfiguration,包括密钥存储库和信任存储库的配置.
⑽ filter,Filter。一个过滤器来确定事件应该由这个Appender。 不止一个过滤器 能够通过使用一个CompositeFilter。
⑾ immediateFail。boolean,设置为true时,日志事件不会等待尝试又一次连接,将马上假设失败 套接字是不可用的。
⑿ immediateFlush,boolean。 当该值设置成真时,默认情况下,每一个写将冲洗。
这将保证写的数据 到磁盘,但可能会影响性能。
⒀ layout,Layout,LogEvent ,布局使用格式。 缺省值是SerializedLayout。
⒁ reconnectionDelay。integer ,假设设置为值大于0,一个错误后SocketManager将尝试又一次连接 在指定的毫秒数后的server。 假设连接失败 将抛出一个异常(能够被应用程序假设ignoreExceptions是 设置为假)。
⒂ ignoreExceptions。boolean,默认值是真正的加入事件时,遇到了引起异常 内部记录,然后忽略。 当设置为假将传播到异常 调用者。
你必须设置这个假当包装这个AppenderFailoverAppender。
日志server代码(main方法):
package com.herman.log4j2.server; import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket; public class TestServer {
public static void main(String[] args) throws IOException {
ServerSocket socket = new ServerSocket(5000);
while (true) {
Socket client = socket.accept();
Thread t = new Thread(new LogRunner(client));
t.start();
}
}
}
日志服务器代码(Runnable线程):
package com.herman.log4j2.server; import java.io.IOException;
import java.io.InterruptedIOException;
import java.io.ObjectInputStream;
import java.net.Socket; public class LogRunner implements Runnable{
private ObjectInputStream ois; public LogRunner(Socket client) {
try {
this.ois = new ObjectInputStream(client.getInputStream());
} catch (Exception e) {
e.printStackTrace();
}
} public void run() {
try {
while (true) {
Object obj= ois.readObject();
System.out.println(obj.toString());
}
} catch(java.io.EOFException e) {
//读取的时候到达尾端抛出的异常,屏蔽掉
} catch(java.net.SocketException e) {
} catch(InterruptedIOException e) {
Thread.currentThread().interrupt();
} catch(IOException e) {
} catch (Exception e) {
e.printStackTrace();
} finally {
}
}
}
客户端xml配置(log4j2.xml):
<? xml version="1.0" encoding="UTF-8"?>
<Configuration>
<!-- Appenders 输出目的地 -->
<Appenders>
<!-- 配置日志输出文件名称字 追加读写 host地址 端口 -->
<Socket name="A1" host="localHost" port="5000">
<!-- 输出格式 序列布局-->
<SerializedLayout/>
</Socket>
<!-- 控制台输出 -->
<Console name="STDOUT" target="SYSTEM_OUT">
<!-- 输出格式 布局-->
<PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/>
</Console>
</Appenders>
<Loggers>
<!-- debug级别 -->
<Root level="debug">
<AppenderRef ref="A1"/>
<AppenderRef ref="STDOUT"/>
</Root>
</Loggers>
</Configuration>
客户端測试代码:
package com.herman.log4j2.test; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; /**
* @see log4j 2.0 简单的配置使用一个文件Appender
* @author Herman.Xiong
* @date 2014年7月21日 14:32:55
*/
public class Test2 {
/**
* 配置日志级别为debug,输出位置为控制台和文件
*/
private static Logger log = LogManager.getLogger(Test2.class);
public static void main(String[] args) {
log.trace("trace");
log.debug("debug");
log.info("info");
log.warn("warn");
log.error("error");
log.fatal("fatal"); log.trace("trace");
log.debug("debug");
log.info("info");
log.warn("warn");
log.error("error");
log.fatal("fatal");
log.exit();
}
}
输出效果:
Logger=com.herman.log4j2.test.Test2 Level=DEBUG Message=debug
Logger=com.herman.log4j2.test.Test2 Level=INFO Message=info
Logger=com.herman.log4j2.test.Test2 Level=WARN Message=warn
Logger=com.herman.log4j2.test.Test2 Level=ERROR Message=error
Logger=com.herman.log4j2.test.Test2 Level=FATAL Message=fatal
Logger=com.herman.log4j2.test.Test2 Level=DEBUG Message=debug
Logger=com.herman.log4j2.test.Test2 Level=INFO Message=info
Logger=com.herman.log4j2.test.Test2 Level=WARN Message=warn
Logger=com.herman.log4j2.test.Test2 Level=ERROR Message=error
Logger=com.herman.log4j2.test.Test2 Level=FATAL Message=fatal
欢迎大家关注我的个人博客!
!!!
如有不懂,疑问或者欠妥的地方。请加QQ群:135430763 进行反馈,共同学习!
版权声明:本文博客原创文章,博客,未经同意,不得转载。
Log4j 2.0在具体解释发展先进的使用—SocketAppender远程输出(五岁以下儿童)的更多相关文章
- bluetooth发展(五岁以下儿童)------蓝牙功能测试(一个)
newton板已出版.下面再组织我调试的一小方面,,蓝牙功能的实现和测试: 转载请注明出处:http://blog.csdn.net/wang_zheng_kai 以下是我写的newton开发板中bl ...
- Cocos2d-X中国象棋的发展《五岁以下儿童》摆棋
在博客上,以实现创建的游戏场景.而一些button,因为button落实到事件作出详细答复,需要使用一些功能摆棋.为此我特意button上的背面的具体实施, 在摆棋前先理清一下摆棋的思路: 1.创建一 ...
- Log4j 2.0在开发中的高级使用具体解释—配置简单的控制台输出(三)
Log4j 2.0在近期迎来了重大的版本号升级.攻克了1.x中死锁bug之外,性能也有10倍的提升. 相同的在最新版本号中的新特性中. 配置文件也不只局限于xml和java特性文件properties ...
- Log4j 2.0在开发中的高级使用具体解释—介绍篇(一)
Log4j最终迎来了首个apache版本号.Log4j 2 是 Log4j 的升级版本号,该版本号比起其前任来说有着显著的改进,包括非常多在 Logback 中的改进以及Logback 架构中存在的问 ...
- Log4j 2.0 使用说明
原文地址:http://blog.csdn.net/welcome000yy/article/details/7962447 Log4j 2.0 使用说明(1) 之HelloWorld 最近刚接触 ...
- Log4j 2.0 使用说明(1) 之HelloWorld
以下是Log4j2.0的类图,以便大家对2.0有一个整体的理解. 就如我们学习任何一个技术一样,这里我们首先写一个Hello World: 1,新建工程TestLog4j 2,下载Log4j 2.0有 ...
- 使用BleLib的轻松搞定Android低功耗蓝牙Ble 4.0开发具体解释
转载请注明来源: http://blog.csdn.net/kjunchen/article/details/50909410 使用BleLib的轻松搞定Android低功耗蓝牙Ble 4.0开发具体 ...
- C# 网络编程之豆瓣OAuth2.0认证具体解释和遇到的各种问题及解决
近期在帮人弄一个豆瓣API应用,在豆瓣的OAuth2.0认证过程中遇到了各种问题,同一时候自己须要一个个的尝试与解决,终于完毕了豆瓣API的訪问.作者这里就不再吐槽豆瓣的认证文档了,毕 ...
- Spring3.0 AOP 具体解释
一.什么是 AOP. AOP(Aspect Orient Programming),也就是面向切面编程.能够这样理解,面向对象编程(OOP)是从静态角度考虑程序结构,面向切面编程(AOP)是从动态角度 ...
随机推荐
- 重新想象 Windows 8 Store Apps (6) - 控件之媒体控件: Image, MediaElement
原文:重新想象 Windows 8 Store Apps (6) - 控件之媒体控件: Image, MediaElement [源码下载] 重新想象 Windows 8 Store Apps (6) ...
- [windows phone] 教你如何使地图动画缩放
原文:[windows phone] 教你如何使地图动画缩放 说明 本篇将介绍如何将地图以动画显示呈现,在以下的范例介绍中可以看到有动画跟没动画的差别,如果你的地图还是很单调的话,不仿加上这个设计,让 ...
- sensor调试过程HAL层数据不能被转移到app
最近调试e-compass传感器,我遇到了一个奇怪的问题,驱动器正常报告数据.但该数据到HAL后该层已经无法上传app. 经debug,我发现这是一个供应商派的代码存在bug,open的fd没有设置N ...
- SDL 简单入门学习
write by 九天雁翎(JTianLing) -- blog.csdn.net/vagrxie 讨论新闻组及文件 概要 实际学习使用SDL创建窗体,并绘制图形. 前言 今天想要做一个简单的demo ...
- javascript焦点图(能够自己主动切换 )
/* 思路总结: 1.实现图片滚动的function.鼠标经时候获取当前li的index.设置ndex自己主动递增的函数.实现淡入淡出效果的函数 2.整个实现效果一传递index为主线 3.我的编写代 ...
- ZOJ 3734 LIKE vs CANDLE
题目意思:(13年长沙站的一道水DP,本人也去了,当时太水笔) 说俩个人竞争选票,每个人可以随机选择支持谁.每个人带有权重不同. 现在已经结束了投票阶段,你一个骇客 支持LIKE 你写了一个软件可以 ...
- 手动安装英特尔® 凌动™ Android* x86 模拟器映像
android的模拟器实在是太慢了,慢的让人欲仙欲死,欲罢不能.猛然发现我的电脑是intel的CPU,我勒个去,换x86模拟器.然后悲剧了,伟大的gfw 我要装sdk,我要研究android开发,到底 ...
- RH033读书笔记(3)-Lab 4 Browsing the Filesystem
Lab 4 Browsing the Filesystem Sequence 1: Directory and File Organization 1. Log in as user student ...
- 乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
原文:乐在其中设计模式(C#) - 访问者模式(Visitor Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 访问者模式(Visitor Pattern) 作者:webabc ...
- 采用objdump调试驱动程序
最近的一个推断调整nand是好是坏司机+测试程序,因此,与下面的调整过程.看来他也学到了一点知识.因此,关于备案. 这篇文章主要是讲述调式驱动的一个方法而已. 先来看看測试程序 #include &l ...