java 使用 Log4J 连接远程服务器进行日志记录

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/10596251/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-10-31 01:45:11  来源:igfitidea点击:

Connect remote server for logging using Log4J

javalog4j

提问by Meenakshi

I want To Connect to the remote server to write my log files using Log4J Socket Appender My log.properties file is as below

我想连接到远程服务器以使用 Log4J Socket Appender 写入我的日志文件我的 log.properties 文件如下

log4j.rootLogger=DEBUG, BLAH

# to connect to the remote server
log4j.appender.BLAH=org.apache.log4j.net.SocketAppender

# set set that layout to be SimpleLayout
log4j.appender.BLAH.layout=org.apache.log4j.SimpleLayout

#log4j.appender.BLAH.File= admin.log

log4j.appender.BLAH.Port= xx
log4j.appender.BLAH.RemoteHost= <remoteIp>

I tried connecting localhost too with port number 22 and 8080

我也尝试使用端口号 22 和 8080 连接本地主机

I am making a mistake some where in the connection . I get the following error

我在连接中的某些地方犯了一个错误。我收到以下错误

log4j:ERROR Could not connect to remote log4j server at [localhost]. We will try again later.

or Give me any suggestions to write the log files in a remote server machine.

或给我在远程服务器机器中写入日志文件的任何建议。

回答by Abhilash

You should have a server running which listens to a given port. The log4j should connect to this server for logging.

您应该有一个正在运行的服务器,它侦听给定的端口。log4j 应该连接到这个服务器进行日志记录。

Type the following in command prompt to start the listener

在命令提示符中键入以下内容以启动侦听器

Java org.apache.log4j.net.SimpleSocketServer 4712 PATH_TO_THE_FILE\log4jServer.properties

Java org.apache.log4j.net.SimpleSocketServer 4712 PATH_TO_THE_FILE\log4jServer.properties

Eg

例如

java org.apache.log4j.net.SimpleSocketServer 4712 C:\log4j-server.properties

java org.apache.log4j.net.SimpleSocketServer 4712 C:\log4j-server.properties

log4j-server.properties may contain something like this.

log4j-server.properties 可能包含这样的内容。

> log4j-server.properties will contain normal configuration of log4j.
> log4j.rootLogger=debug, stdout
> log4j.appender.stdout=org.apache.log4j.ConsoleAppender
> log4j.appender.stdout.Target=System.out
> log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
> log4j.appender.stdout.layout.ConversionPattern=%t %-5p %c{2} - %m%n

In the client side, your log4j config will look like this

在客户端,您的 log4j 配置将如下所示

log4j.rootLogger=DEBUG, BLAH  
# to connect to the remote server 
log4j.appender.BLAH=org.apache.log4j.net.SocketAppender  
# set set that layout to be SimpleLayout 
log4j.appender.BLAH.layout=org.apache.log4j.SimpleLayout  
#log4j.appender.BLAH.File= admin.log  
log4j.appender.BLAH.Port= 4712 
log4j.appender.BLAH.RemoteHost=10.225.226.58

Replace the IP and Port(without conflicting the standard ports) as per your configuration. Hope this would help.

根据您的配置替换 IP 和端口(不与标准端口冲突)。希望这会有所帮助。

回答by artbristol

Port 22 and 8080 are usually used by SSH and HTTP respectively. The SocketAppenderis expecting to talk to a SocketNodeusing its own TCP-based protocol. So you need to start one up, on a different port of your choice.

SSH 和 HTTP 通常分别使用端口 22 和 8080。该SocketAppender期待谈了到SocketNode使用它自己的基于TCP的协议。因此,您需要在您选择的不同端口上启动一个。

Note that when you try to log to a remote server, you'll need to have that port open on the firewall.

请注意,当您尝试登录到远程服务器时,您需要在防火墙上打开该端口。