分类: LINUX
2008-03-03 21:35:54
The syslog-ng application allows you to define message templates, and reference them from every object that can use a template. Templates can be used to create standard message formats or filenames. Templates can reference one or more macros (e.g., date, the hostname, etc.). See for a list of available macros.
# 注释 :syslog-ng 允许你定义消息格式的模板,然后你可以在每个对象内部引用它。模版可以用于创建标准消息格式或者文件名。
# 模板还可以引用一个后者多个宏(例如日期、主机名,也就是预先定义的变量)。
Template objects have a single option called template_escape
, which is turned on by default
(template_escape(yes)
). This causes
syslog-ng to escape the '
and "
characters from the messages. This behavior
might cause problems when the messages are passed to a an application that
cannot handle escaped characters properly. In such case, disable the escape
feature (template_escape(no)
).
# 注释 :模板对象只有1个选项,名为 template_esscape ,默认是启用的(yes)。
# 作用是让 syslog-ng 将消息中的单引号和双引号进行转义
Example 3.8. Using templates | |
---|---|
The following template ( # 注释 :下面的模版增加消息的时间和主机名到消息的头部。然后在 destination d_file 中引用它。 # 补充 :ISODATE、HOST、MSG 都是 宏,要引用它们,用 $ # 补充 :要在一个 destination 中引用某个模板,用
template( # 补充 :如果把 template ()用于 file ()之内,表示对该文件采用该模版。所以不同的文件可以采用不同的模版 template t_demo_filetemplate { Templates can also be used inline, if they are used only at a single location. The following destination is equivalent with the previous example: # 注释 :template()也可以单独一行,表示对所有的文件都起作用 # 问题 :可以在一个 log 语句中为不同的 file()使用不同的模板吗? destination d_file { |
Example 3.9. Feeding messages into an SQL database | |
---|---|
In order to record the log messages in a database, the messages have to be
formatted in a way recognized by the database application. This can be
accomplished using templates and macros. The following template creates an SQL
# 注释 :如果是要把日志写入数据库,还必须把消息格式化为一个可以被数据库应用程序所识别的格式。 # 这时可以使用下面的格式,实际上是一个 sql 的 insert 语句 template t_sql { The Premium Edition of syslog-ng natively supports logging into a database. See for details. |