更改自定义monolog文件上的文件名

时间:2018-02-22 09:10:40

标签: php symfony symfony-2.8 monolog symfony-2.7

我使用旋转的monolog处理程序

monolog:
        channels: ['import']
        handlers:
            import_client:
                level: debug
                type: rotating_file
                max_files: 10
                path: '%kernel.logs_dir%/import.log'
                channels: [import_client]

一切正常,但我不喜欢文件名。我得到import-2018-02-22.log 是否存在更改此格式的方法?

我希望文件名像import-"date(YmdHis)".log

可以重写文件名格式吗?你有什么解决方案吗?

2 个答案:

答案 0 :(得分:0)

RotatingFileHandler将记录记录到文件中,并创建一个日志文件每天。它还将删除早于$ maxFiles的文件。您应该使用logrotate进行高调设置,这只是一个快速而肮脏的解决方案。

正如您在原始RotatingFileHandler中看到的那样:您可以更改旋转日期格式

public function setFilenameFormat($filenameFormat, $dateFormat)

但我在symfony monolog reference中没有看到任何配置选项。 您可以使用

调用服务
services:
    app.custom_rotating_service:
        # ...
        calls:
            - method: setFilenameFormat
              arguments:
                  - 'yourFilenameFormat'
                  - 'Ymd'

在我看来,如果没有日期格式的附加值,你会陷入复杂的事情。

<强> TLDR

  • 不可能有一个日志文件按小时/分钟与monolog
  • 将处理程序的日期格式或轮换频率更改为月份/年似乎(对我而言)可行,但symfony monolog配置不支持。您可以创建服务并尝试在服务创建时自动调用该方法
  • 如果您有自定义需要旋转日志
  • ,则应使用logrotate

答案 1 :(得分:0)

我找到了解决方案,需要在config处理程序中添加一个新参数:

date_format: 'YmdHms'