Logging TYPO3:如何配置$GLOBALS[';TYPO3#CONF#u VARS';][';LOG';]correclty
我正在尝试使用日志框架的配置为TYPO3中的一个自定义类进行日志记录,如下所述: 我想为中的每个类配置日志记录 \Aip\Taglialacoda\Task\ 在没有配置的情况下,日志消息会写入typo3temp\var\log下的日志文件中 我做过几次这样的尝试: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
$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模块中仅使用核心功能阅读此内容,那您就太倒霉了。 要么:
您的配置看起来不错(一般来说),但无法按预期工作 您可能需要首先确保您知道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
$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
。您是否可以重新表述您的期望以及记录在哪里(文件、位置、数据库)?