我正在使用rsyslog imfile模块运送laravel日志。 我使用startmsg.regex处理多行消息。这些效果很好。
input(type="imfile"
File="laravel.log"
Tag="laravel_app"
startmsg.regex="[[:digit:]]{4}-[[:digit:]]{1,2}-[[:digit:]]{1,2} [[:digit:]]{1,2}:[[:digit:]]{1,2}:[[:digit:]]{1,2}"
)
然后我将日志发送到 Logstash (然后在 Elasticsearch 和Kibana中使用它们) 我使用 Rsyslog模板
运送日志template(name="json-template"
type="list") {
constant(value="{")
constant(value="\"@timestamp\":\"") property(name="timereported" dateFormat="rfc3339")
constant(value="\",\"@version\":\"1")
constant(value="\",\"message\":\"") property(name="msg" format="json")
constant(value="\",\"sysloghost\":\"") property(name="hostname")
constant(value="\",\"severity\":\"") property(name="syslogseverity-text")
constant(value="\",\"facility\":\"") property(name="syslogfacility-text")
constant(value="\",\"programname\":\"") property(name="programname")
constant(value="\",\"procid\":\"") property(name="procid")
constant(value="\"}\n")
}
我的日志如下所示,其中的换行符标记为\ n
[2018-06-07 11:02:33]测试。错误:类'App \ Http \ Controllers \ Deal' 找不到{“ exception”:“ [对象] (Symfony \ Component \ Debug \ Exception \ FatalThrowableError(code:0):类 找不到“ App \ Http \ Controllers \ Deal” /app/Http/Controllers/TestingSyslogController.php:13)\n[stacktrace]\n#0 [内部功能]: App \ Http \ Controllers \ TestingSyslogController-> index()\ n#1 /vendor/laravel/framework/src/Illuminate/Routing/Controller.php(54): call_user_func_array(Array,Array)\ n#2 /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(45): 照亮\ Routing \ Controller-> callAction('index',Array)\ n#3 /vendor/laravel/framework/src/Illuminate/Routing/Route.php(212): Illuminate \ Routing \ ControllerDispatcher-> dispatch(Object(Illuminate \ Routing \ Route), 对象(App \ Http \ Controllers \ TestingSyslogController),'index')\ n#4 /vendor/laravel/framework/src/Illuminate/Routing/Route.php(169): 照亮\ Routing \ Route-> runController()\ n#5
因此整个消息都在一行{message}
中如何使用rsyslog模板将“ \ n”处的消息拆分为不同的对象,使其看起来像这样…… {message line 1},{message line 2},{message line x}