我有一个将日志发送到日志服务器存储的记录器。这工作正常,但不使用模式布局。有或没有这不会改变任何事情。我相信记得在某处阅读socketappender使用的是自己的模式而不是其他人的模式。
<appender name="LOGSTASH" class="org.apache.log4j.net.SocketAppender">
<param name="Port" value="5000"/>
<param name="RemoteHost" value="192.168.81.131"/>
<param name="ReconnectionDelay" value="5000"/>
<param name="LocationInfo" value="true" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{1}] %m%n" />
</layout>
</appender>
Run Code Online (Sandbox Code Playgroud)
但是在这个文档(和其他一些)中使用这个。此文档中的示例:
<appender name="A1" class="org.apache.log4j.net.SocketAppender">
<param name="RemoteHost" value="localhost"/>
<param name="Port" value="5000"/>
<param name="LocationInfo" value="true"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%t %-5p %c{2} - %m%n"/>
</layout>
</appender>
Run Code Online (Sandbox Code Playgroud)
那么是不可能在socketappender 中使用个人模式还是我的错?
如果不可能,是否有其他附加程序用于使用自定义模式进行 tcp 日志记录?
我有一个ELK服务器来管理我的日志.通常他们会自动发送.一切正常.但出于某种原因,有时我们需要发送一个日志文件.
我想这样做:
curl -F "file=@<my_file_path>" http://<ELK_server_host>:5001
Run Code Online (Sandbox Code Playgroud)
这个conf(在这里有用的部分)在服务器端:
input {
...
tcp {
port => 5001
type => "curl"
codec => line { charset => "UFT-8" }
}
.....
}
filter {
.....
if "curl" == [type] {
multiline {
pattern => "^%{TIMESTAMP_ISO8601}"
negate => true
what => previous
}
grok {.....}
date {.....}
}
.....
}
output {
stdout { codec => rubydebug }
elasticsearch {
host => localhost
}
}
Run Code Online (Sandbox Code Playgroud)
这项工作真的很好但是有两个小困难:
我在java Rest Api中使用Jackson来处理请求参数.
我的班级:
public class ZoneModifBeanParam extends ModifBeanParam<Zone> {
@FormParam("type")
private String type;
@FormParam("geometry")
private Geometry geometry;
@FormParam("name")
private String name;
...
Run Code Online (Sandbox Code Playgroud)
我的API界面:
@POST
@Consumes("application/json")
@Produces("application/json; subtype=geojson")
@ApiOperation(value = "Create a zone", notes = "To create a zone")
public Response createZone(ZoneModifBeanParam zoneParam) {
...
Run Code Online (Sandbox Code Playgroud)
这工作正常,但我需要接收我的Bean在地图中未指定的其他参数.示例:
{
"geometry": {...},
"name": "A circle name",
"type": "4",
"hello": true
}
Run Code Online (Sandbox Code Playgroud)
通过接收这个我需要存储在一个Map(名为unrecognizedFields并在我的bean中声明)这对夫妇("你好",真实).
是否有任何注释或对象允许这个?
我正在设置日志的收集器。我的应用程序使用SyslogAppender(log4j)将日志发送到远程日志服务器。我还可以使用curl命令行保存所有应用程序日志和postgresql数据库日志。我的日志服务器是ELK服务器(都在同一群集中)。
但是现在我想自动发送postgresql日志,就像处理Appender和应用程序日志一样。是否可以使用postgresql.conf文件执行此操作?还是我必须使用logstash转发器?(如果可能,我希望避免使用转发器)