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远程输出(五岁以下儿童)的更多相关文章

  1. bluetooth发展(五岁以下儿童)------蓝牙功能测试(一个)

    newton板已出版.下面再组织我调试的一小方面,,蓝牙功能的实现和测试: 转载请注明出处:http://blog.csdn.net/wang_zheng_kai 以下是我写的newton开发板中bl ...

  2. Cocos2d-X中国象棋的发展《五岁以下儿童》摆棋

    在博客上,以实现创建的游戏场景.而一些button,因为button落实到事件作出详细答复,需要使用一些功能摆棋.为此我特意button上的背面的具体实施, 在摆棋前先理清一下摆棋的思路: 1.创建一 ...

  3. Log4j 2.0在开发中的高级使用具体解释—配置简单的控制台输出(三)

    Log4j 2.0在近期迎来了重大的版本号升级.攻克了1.x中死锁bug之外,性能也有10倍的提升. 相同的在最新版本号中的新特性中. 配置文件也不只局限于xml和java特性文件properties ...

  4. Log4j 2.0在开发中的高级使用具体解释—介绍篇(一)

    Log4j最终迎来了首个apache版本号.Log4j 2 是 Log4j 的升级版本号,该版本号比起其前任来说有着显著的改进,包括非常多在 Logback 中的改进以及Logback 架构中存在的问 ...

  5. Log4j 2.0 使用说明

      原文地址:http://blog.csdn.net/welcome000yy/article/details/7962447 Log4j 2.0 使用说明(1) 之HelloWorld 最近刚接触 ...

  6. Log4j 2.0 使用说明(1) 之HelloWorld

    以下是Log4j2.0的类图,以便大家对2.0有一个整体的理解. 就如我们学习任何一个技术一样,这里我们首先写一个Hello World: 1,新建工程TestLog4j 2,下载Log4j 2.0有 ...

  7. 使用BleLib的轻松搞定Android低功耗蓝牙Ble 4.0开发具体解释

    转载请注明来源: http://blog.csdn.net/kjunchen/article/details/50909410 使用BleLib的轻松搞定Android低功耗蓝牙Ble 4.0开发具体 ...

  8. C# 网络编程之豆瓣OAuth2.0认证具体解释和遇到的各种问题及解决

            近期在帮人弄一个豆瓣API应用,在豆瓣的OAuth2.0认证过程中遇到了各种问题,同一时候自己须要一个个的尝试与解决,终于完毕了豆瓣API的訪问.作者这里就不再吐槽豆瓣的认证文档了,毕 ...

  9. Spring3.0 AOP 具体解释

    一.什么是 AOP. AOP(Aspect Orient Programming),也就是面向切面编程.能够这样理解,面向对象编程(OOP)是从静态角度考虑程序结构,面向切面编程(AOP)是从动态角度 ...

随机推荐

  1. HTML5学习笔记简明版(11):新API

    HTMLDocument上的扩展 HTML5在DOM Level 2 HTML上扩展了一些HTMLDocument的接口. 这些接口在全部实现了Document接口的元素对象上进行了实现.HTML5在 ...

  2. iOSSingleton设计模式详细的说明教程

    iOS有很多的设计模式,当然,不管是什么语言有很多的设计模式.辛格尔顿是一种之一,辛格尔顿,它从字面上是一个单独的实例,首先,它是只有一个单一的,其次,它是一个实例.我们知道,在iOS用于开发Obje ...

  3. UVA 12103 - Leonardo&#39;s Notebook(数论置换群)

    UVA 12103 - Leonardo's Notebook 题目链接 题意:给定一个字母置换B.求是否存在A使得A^2=B 思路:随意一个长为 L 的置换的k次幂,会把自己分裂成gcd(L,k) ...

  4. LeetCode: Distinct Subsequences [115]

    [称号] Given a string S and a string T, count the number of distinct subsequences of T in S. A subsequ ...

  5. Unix编程艺术札记版本

    这本书是一位面试官告诉我,.非常感谢他的忠告.面试的说明.我写后认为,足.一方面是面试的技巧.另一方面就是学习的方法. 阅读这本书非常享受,加上之前的积累,一些疑惑,另一些基础的不足,在这本书里找 ...

  6. c# 通过配置自动附加数据库

    using System; using System.Collections.Generic; using System.Windows.Forms; using System.Data.SqlCli ...

  7. 水题 hdu1002------用BigInteger解决大数问题

    Problem Description I have a very simple problem for you. Given two integers A and B, your job is to ...

  8. Convert View To Bitmap

    public static Bitmap convertViewToBitmap(View view) { view.destroyDrawingCache(); view.measure(View. ...

  9. 1.网络工具:ifconfig,ping,netstate,Redhat命令和图形化设置ip,finger,nslookup

     1 ip ad查看网卡编号 2.ifconfig查看网卡信息 3.关闭网卡 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdG90b3R1enVvcX ...

  10. 最小二乘法 (转)good

    最小二乘法也称为最小平方法,是一种数据优化技术,它通过最小化误差的平方和寻找数据的最佳函数匹配. 最小二乘法最初由高尔顿在创立回归分析的时候提出,现在已经成为探索变量间关系最重要的方法,最小二乘法根据 ...