Logging rsyslog操作中的动态密钥名

Logging rsyslog操作中的动态密钥名,logging,redis,rsyslog,Logging,Redis,Rsyslog,我正在尝试将系统上的所有日志发送到redis数据库。为此我 在文件“/etc/rsyslog.d/redis.conf”中包含以下配置。 我按照使用队列模式的说明进行操作。以下内容 是我拥有的配置: module(load="omhiredis") action( name="push_redis" type="omhiredis" mode="queue" key="testqueue" ) 问题: 上述配置会将日志写入redis数据库,但 所有日志保持

我正在尝试将系统上的所有日志发送到redis数据库。为此我 在文件“/etc/rsyslog.d/redis.conf”中包含以下配置。
我按照使用队列模式的说明进行操作。以下内容
是我拥有的配置:

module(load="omhiredis")

action(
  name="push_redis"
  type="omhiredis"
  mode="queue"
  key="testqueue"
)          
问题:
上述配置会将日志写入redis数据库,但
所有日志保持不变,即“testqueue”

我想,当一个程序登录时,应该在redis中创建一个新的密钥,这与
程序的名称。然后我就可以检查
每个程序都是分开的

Attempts :
我尝试使用如下过滤器:

if $programname == 'logger' then {
  action(
      name="push_redis"
      type="omhiredis"
      mode="queue"
      key="logger"
    )
}  
但是我必须为每个程序编写一个过滤器,这是可能的
但这不是一个可接受的解决方案

Is there any way to create a key dynamically when a program logs into redis ?

感谢您花时间阅读此问题。

此问题已在8.23中使用dynakey参数解决


从理论上讲,也可以使用mode=“template”,但当消息包含空格时,它还不能正常工作。

这已通过使用8.23上的dynakey参数解决

理论上也可以使用mode=“template”,但当消息包含空格时,它还不能正常工作

Is there any way to create a key dynamically when a program logs into redis ?