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. MySQL在大数据Limit使用

    它已被用于Oracle一世.但今天,很惊讶,MySQL在对数量级的性能,甚至差距如此之大不同的顺序相同的功能. 看看表ibmng(id,title,info)  只要  id key 指数title ...

  2. HTML contact form with CAPTCHA

    http://www.html-form-guide.com/contact-form/html-contact-form-captcha.html#codedownload

  3. Linux 编程学习笔记----ANSI C 文件I/O管理

    转载请注明出处:http://blog.csdn.net/suool/article/details/38129201 问题引入 文件的种类 依据数据存储的方式不同,能够将文件分为文本文件和二进制文件 ...

  4. HDOJ 5147 Sequence II 树阵

    树阵: 每个号码的前面维修比其数数少,和大量的这后一种数比他的数字 再枚举每一个位置组合一下 Sequence II Time Limit: 5000/2500 MS (Java/Others)    ...

  5. svn 使用(一个)

    一个. 安装svn  server(操作系统centos) yum install subversion 通过 subversion -v 如果成功安装命令来查看 温馨提示不承担任何subversio ...

  6. Android从无知到有知——NO.7

    的ip拨号器在监听外拨电话时用的是系统提供的广播事件.而有些时候我们须要自己设定广播事件来满足特定的须要. Ok,今天整一下自己定义广播事件,我们用一个状态监測模块向一个3G模块发送报警信息来实现这一 ...

  7. Gradle构建多模块项目(转)

    废话不多说,直接进入主题. 1. 创建项目 首先创建项目,名称为 test: mkdir test && cd test gradle init 这时候的项目结构如下: ➜ test ...

  8. HBase系列文章汇总

    本文整理汇总了本博客自去年学习HBase以来写的全部关于HBase的相关内容.持续更新中,很多其它内容.敬请关注! 相关知识: 1.<布隆过滤器(Bloom Filter)> 2.< ...

  9. android imageButton 透明图片

    在Android有许多不规则button.例如: 这个时候,我们假设想做成不规则button的话.第一步就是搞一张边缘透明的png图片,然后用src指定到他.这个时候我们会发现,还没有达到要的效果.还 ...

  10. windows下搭建Apache+Mysql+PHP开发环境

    原文:windows下搭建Apache+Mysql+PHP开发环境 要求 必备知识 熟悉基本编程环境搭建. 运行环境 windows 7(64位); Apache2.2;MySQL Server 5. ...