您的位置:首页 > 理论基础 > 计算机网络

Log4j2 TcpSocketServer 日志集中打印

2017-08-23 19:44 363 查看
  在网上找了好久都是基于log4j1的,官方网站也只是提到了客户端的配置,搞了好久终于做了一个基于log4j2的日志集中访问的日志服务器。(网上其它都是copy来copy去的,本示例绝对全网首发)

具体步骤:

1。引入log4j-api-2.1.jar;log4j-core-2.1.jar两个jar包

2.配置log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>

<Configuration>

  <!-- Appenders 输出目的地 -->

  <Appenders>

  <!-- 配置日志输出文件名字     追加读写     host地址  端口    -->

    <Socket name="system" host="localHost" port="5001" >

    <!-- 输出格式  序列布局-->

    <SerializedLayout />

<!--   <PatternLayout pattern=" [%t] %-5level %logger{36} %L- %msg%n" /> -->

<!--       <PatternLayout pattern=" [%t] %-5level %logger{36} %L- %msg%n" />   -->

    </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="system"/>

      <AppenderRef ref="STDOUT"/>

    </Root>

    <Logger name="apiall" level="info" additivity="false">
<AppenderRef ref="system" />
</Logger>

  </Loggers>

</Configuration>

3.配置log4j2的服务器端,创建画横线的3个文件即可。

log4j-api-2.1.jar

log4j-core-2.1.jar

log4j2.xml

4.配置服务器端的log4j2.xml(当然可以改为其它名字) 。 我这里是输出到D:/logs/log4j2test.log文件里了。

<?xml version="1.0" encoding="UTF-8"?>

<Configuration>

  <!-- Appenders 输出目的地 -->

  <Appenders>

    <!-- 控制台输出 -->

    <Console name="STDOUT" target="SYSTEM_OUT">

    <!-- 输出格式  布局-->

      <PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/>

    </Console>
<File name="MyFile" fileName="D:/logs/log4j2test.log">  

            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %C{2} (%F:%L) %L- %msg%n" />  

    </File> 

  </Appenders>

  <Loggers>

  <!-- debug级别 -->

    <Root level="debug">

      <AppenderRef ref="MyFile"/>

      <AppenderRef ref="STDOUT"/>

    </Root>

    <Logger name="apiall" level="ERROR" additivity="false">
<AppenderRef ref="MyFile" />
</Logger>

  </Loggers>

</Configuration>

5. 执行服务器端Main函数 开启进程  5001端口(一定要与客户端对应)

java -cp log4j-api-2.1.jar;log4j-core-2.1.jar org.apache.logging.log4j.core.net.server.TcpSocketServer 5001 log4j2.xml

6.编写客户端测试类,并执行

package com.atzy.log;

import org.apache.logging.log4j.LogManager;

import org.apache.logging.log4j.core.Logger;

public class Log4j2RemoteTest {
static Logger logger = (Logger) LogManager.getLogger ("apiall");
public static void main(String[] args) {
logger.error("this is log4j2 remote test error");
logger.debug("this is log4j2 remote test debug");
logger.info("this is log4j2 remote test info");
logger.trace("this is log4j2 remote test trace");
}

}

7.查看日志输出 。因为我设置的info级别的所以只打印了info以上级别的

8.总结::

到此已经成功使用log4j2集中进行日志管理了。记录下来整个过程。欢迎拍砖。。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  log4j2socketAppender
相关文章推荐