Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Logging TYPO3:如何配置$GLOBALS[';TYPO3#CONF#u VARS';][';LOG';]correclty_Logging_Configuration_Typo3 - Fatal编程技术网

Logging TYPO3:如何配置$GLOBALS[';TYPO3#CONF#u VARS';][';LOG';]correclty

Logging TYPO3:如何配置$GLOBALS[';TYPO3#CONF#u VARS';][';LOG';]correclty,logging,configuration,typo3,Logging,Configuration,Typo3,我正在尝试使用日志框架的配置为TYPO3中的一个自定义类进行日志记录,如下所述: 我想为中的每个类配置日志记录 \Aip\Taglialacoda\Task\ 在没有配置的情况下,日志消息会写入typo3temp\var\log下的日志文件中 我做过几次这样的尝试: $GLOBALS['TYPO3_CONF_VARS']['LOG']['Aip']['Taglialacoda']['Task']['writerConfiguration'] = [ TYPO3\CMS\Core\Log

我正在尝试使用日志框架的配置为TYPO3中的一个自定义类进行日志记录,如下所述:

我想为中的每个类配置日志记录

\Aip\Taglialacoda\Task\

在没有配置的情况下,日志消息会写入typo3temp\var\log下的日志文件中

我做过几次这样的尝试:

$GLOBALS['TYPO3_CONF_VARS']['LOG']['Aip']['Taglialacoda']['Task']['writerConfiguration'] = [
    TYPO3\CMS\Core\Log\LogLevel::INFO => [
        TYPO3\CMS\Core\Log\Writer\SyslogWriter::class => [],
    ]
];
结果总是一样的:我在任何地方都找不到记录的消息。 我编写的类是一个任务,因此它扩展了AbstractTask,并有自己的记录器。 出于这个原因,我已经指定了另一个记录器(我不希望每个任务都写入SYS LOG) 正如我所说,在没有配置的情况下,新的记录器会写入日志文件。 添加类型错误的配置时,类会引发异常(因此会考虑配置)。
使用上面的配置,日志消息似乎消失了。

这是为了在日志表中记录日志消息(您可以在后端找到“日志”列表) 如果要“写入”文件,请使用filewrite: 总结:

据我所知,如果您想使用日志框架登录到sys_log DB表,并在“log”BE模块中仅使用核心功能阅读此内容,那您就太倒霉了。

要么:

  • 使用扩展“”(来源于)(免责声明:这是一个已在GitHub上“存档”的第三方扩展,我不知道是否支持它或支持它多长时间)。它在“管理工具”中创建自己的后端模块“日志”

  • 使用或

  • 编写您自己的LogWriter,它将以“log”BE模块可读的正确格式写入sys_日志表


  • 您的配置看起来不错(一般来说),但无法按预期工作

    您可能需要首先确保您知道SyslogWriter将向何处写入。这一点在本节中进行了解释。SyslogWriter不会像预期的那样写入“sys_log”数据库表,而是通过syslog写入系统日志。最终的结果取决于您的配置。您可能需要检查/var/log/messages。这可能不是你想要的。改用FileWriter或DatabaseWriter

    但是,如果使用,则无法通过后端的“日志”模块读取,如文档中所述:

    Admin Tools>Log模块不适合DatabaseWriter写入sys_Log表的记录。如果您在那里写入这样的记录,您将无法使用该模块查看它们。 提示:网站上有一个工具可以在TYPO3后端查看此类记录

    我认为,如果您将TYPO3中的登录视为两个单独的API,这会有所帮助:

  • 使用后端中的“日志”模块查看此内容的“旧”方式。这在文档中不再推荐(尽管仍在核心中使用)
  • 较新的登录方式,可以登录到文件、数据库表等,也可以扩展到其他写入程序 使用
    $GLOBALS['TYPO3\u CONF\u VARS'][SYS][belogErrorReporting]

    因此,如上所述,如果您想使用日志框架(2.)登录到sys_日志,并在“log”BE模块中仅使用核心功能读取该日志,那么您就不走运了。列出了一个扩展名。另一种可能是创建自己的日志编写器,然后使用其中的writelog()写入sys_日志。这样你将来会更灵活

    我个人也很喜欢的是用的岗哨方法。你可能想看看。但是你必须设置一个岗哨服务器。但这很容易做到(至少对我来说是开箱即用的),当然这取决于你的网站运行的位置


    • 在core中,您将看到默认情况下使用了“sys_log”,但需要一个不同的模式(如中所述)。在我看来,这毫无意义,但事实就是如此
    • 看看核心。您将看到日志记录(在writeLog()中)是通过PHP函数完成的。这不知道sys_log中的TYPO3日志记录
    • 查看核心错误和异常处理程序,例如typo3/sysext/core/Classes/error/AbstractExceptionHandler.php,您将看到日志记录是通过日志框架(
      $this->logger
      )和
      sys\u log
      完成的

    您可以按说明使用DatabaseWriter

    您必须使代码适应以下情况:

    $GLOBALS['TYPO3_CONF_VARS']['LOG']['Aip']['Taglialacoda']['Task']['writerConfiguration'] = [
        TYPO3\CMS\Core\Log\LogLevel::INFO => [
            TYPO3\CMS\Core\Log\Writer\DatabaseWriter::class => [],
        ]
    ];
    

    默认情况下,这会将日志添加到sys_log表中(您也可以使用单独的新表)。如警告部分所述,管理工具->日志模块无法读取这些记录。您必须安装。

    这正是问题所在:我想在日志表中写入内容,但在表中或日志文件中都没有写入任何内容。我的逻辑基于这样一个事实,即日志表中填充了诸如管理员登录和注销事件、清除缓存甚至一些PHP错误之类的事件,因此,SyslogWriter应该已经配置为写入sys_log表。根据您的建议,我查阅了$GLOBALS['TYPO3_CONF_VARS'),发现除了我的配置之外,没有其他特定的配置。在sys_日志中写入内容正是我想要实现的目标,因为这样可以让站点管理员从后端查看事件。我最初的假设是,您可以使用DatabaseWriter进行日志记录,这样做是错误的。我更新了我的答案。据我所知,这是最好的。也许有人有更好的主意。我还建议询问Slack#typo3 cms频道:请参阅使用
    SyslogWriter
    将使用PHP的
    syslog
    ()将日志项写入,例如
    /var/log/syslog
    。您是否可以重新表述您的期望以及记录在哪里(文件、位置、数据库)?