gpt4 book ai didi

logging - TYPO3:如何正确配置 $GLOBALS ['TYPO3_CONF_VARS' ] ['LOG' ]

转载 作者:行者123 更新时间:2023-12-04 04:11:38 24 4
gpt4 key购买 nike

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

https://docs.typo3.org/m/typo3/reference-coreapi/8.7/en-us/ApiOverview/Logging/Configuration/Index.html

我想为每个类配置日志

\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)正如我在没有配置的情况下所说的,新记录器写入日志文件。添加错误类型的配置类会引发异常(因此考虑了配置)。使用日志消息上方的配置似乎消失了。

最佳答案

总结:

据我所知,如果您想使用日志记录框架记录到 sys_log 数据库表并在仅具有核心功能的“日志”BE 模块中读取它,那么您就不走运了。

或者:

  1. 使用扩展“logs ”(来源 GitHub )(免责声明:这是已在 GitHub 上“存档”的第三方扩展,我不知道它是否会得到支持或支持多久).它在“管理工具”中创建自己的后端模块“日志”。

  2. 使用 file loggingsentry logging

  3. 编写您自己的 LogWriter,它将以“Log”BE 模块可读的正确格式写入 sys_log 表。


您的配置看起来不错(总体而言),但无法按预期工作。

您可能首先要确定,您知道 SyslogWriter 将写入的位置。这在 documentation 中有解释。 . SyslogWriter 不会像人们预期的那样写入“sys_log”数据库表,而是通过 syslog 写入系统日志。最终结果取决于您的配置。您可能需要检查您的/var/log/messages。这可能不是您想要的。请改用 FileWriter 或 DatabaseWriter。

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

The Admin Tools > Log module is not adapted to the records written by the DatabaseWriter into the sys_log table. If you write such records there, you will not be able to see them using that module. Tip: There’s a tool for viewing such records in the TYPO3 backend at https://github.com/vertexvaar/logs.

我认为,如果您将 TYPO3 中的日志记录视为 2 个独立的 API,它会有所帮助:

  1. logging to the "sys_log" table with writelog() 的“旧”方式并使用后端的“日志”模块查看。文档中不再推荐这样做(尽管核心中仍在使用)。
  2. 使用 "Logging API" 登录的新方法它可以记录到文件、数据库表等,也可以扩展到记录到其他作者。

带1的方法是使用$GLOBALS['TYPO3_CONF_VARS'][SYS][belogErrorReporting]配置的

因此,如上所述,如果您想使用日志记录框架 (2.) 记录到 sys_log 并在仅具有核心功能的“日志”BE 模块中读取它,那么您就不走运了。列出了一个扩展 https://github.com/vertexvaar/logs .另一种可能性是创建自己的 LogWriter,然后在其中使用 writelog() 写入 sys_log。这样你以后会更加灵活。

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


  • 查看核心typo3/sysext/core/Classes/Log/Writer/DatabaseWriter.php您会看到默认情况下使用“sys_log”,但需要不同的模式(在 documentation 中也提到过)。在我看来,这根本没有意义,但事实就是如此。
  • 查看核心typo3/sysext/core/Classes/Log/Writer/SyslogWriter.php .您将看到日志记录(在 writeLog() 中)是使用 PHP 函数 syslog 完成的。 .这不知道 sys_log 中的 TYPO3 日志记录。
  • 查看核心错误和异常处理程序,例如typo3/sysext/core/Classes/Error/AbstractExceptionHandler.php 你会看到日志是通过日志框架($this->logger)完成的系统日志.

关于logging - TYPO3:如何正确配置 $GLOBALS ['TYPO3_CONF_VARS' ] ['LOG' ],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61628714/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com