2020-09-09 09:31发布
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
在以前的hybris版本中,在引入log4j2之前,应用程序中所有已声明的记录器都以hac记录配置自动显示,可以在其中设置记录级别。
默认情况下,自hybris 6.0起,它不会自动发生。
此功能是否被删除,或者是否有可能通过配置以某种方式启用它?
有数百个记录器,将所有记录器都列出在project.properties文件中是不合理且令人讨厌的。
这是在使用食谱(b2c_acc)构建的6.1.0.2上进行的测试,因此local.properties中没有自定义项,也没有覆盖属性。 到目前为止,我发现的是以下属性:
log4j2.config.xml = hybris-log4j2.xml
是在project.properties中为以下扩展名设置的(找不到其他处于活动/启用状态的引用):
hybris \ bin \ ext-content \ cmswebservices \ project.properties
hybris \ bin \ ext-content \ smarteditwebservices \ project.properties
因此,除非在local.properties中进行了更改,否则您将使用以下默认Log4j2配置文件(此处是堆栈附带的):
\ hybris \ bin \ platform \ ext \ core \ resources \ hybris-log4j2.xml
如果查看以上(默认)Log4j2配置文件,您会发现在HAC中看到的记录器与该默认配置文件的记录器匹配。 如果您更改该文件,例如,仅使用rootLogger,则在启动它后将仅在HAC中找到rootLogger(请记住,仍然需要设置属性log4j2.config.xml = hybris-log4j2.xml)。
如果在上面提到的project.properties文件中禁用了属性(log4j2.config.xml),则没有任何变化,看来相同的记录器仍在HAC中弹出。
...因此,我只是从堆栈中删除了配置文件(hybris-log4j2.xml)以确保未加载该文件,然后禁用该属性并再次构建它,同样。 仍然找到相同的记录器...
现在在HAC中显示的记录器仍然相同,但是现在来自:
\ hybris \ bin \ platform \ project.properties
您会发现平台project.properties文件包含相同的记录器。
这意味着您需要在属性文件中用3行指定每个类,以便能够在hac中对其进行配置。 这似乎不是一个合适的解决方案。 在6.0之前的版本中,可以在不显式说明所有单个类的情况下指定日志级别。
FYI,今天在Hybris JIRA中该错误的严重性已提高至严重( https://jira.hybris.com/browse/ECP-1231)。该错误在6.0中被发现,现在已经存在了将近7个月。
很显然,以上内容无法解释为什么除非明确定义,否则记录器不会显示。 我最好的猜测是,由于某种原因,HAC仅显示使用Log4j2样式道具或通过显式xml配置文件定义的内容。
日志记录似乎运行良好,所以我想其他人都已注册,但未在HAC中显示。
我们已在一个项目中实现了可行的修复程序。 但是,此修复很丑陋,因为您需要修补/重新实现其中一个HAC类,而这些类不能通过Spring机制进行修补。 相信我,您不想知道我们是如何做到的。 ;-)
最多设置5个标签!
这是在使用食谱(b2c_acc)构建的6.1.0.2上进行的测试,因此local.properties中没有自定义项,也没有覆盖属性。 到目前为止,我发现的是以下属性:
log4j2.config.xml = hybris-log4j2.xml
是在project.properties中为以下扩展名设置的(找不到其他处于活动/启用状态的引用):
hybris \ bin \ ext-content \ cmswebservices \ project.properties
hybris \ bin \ ext-content \ smarteditwebservices \ project.properties
因此,除非在local.properties中进行了更改,否则您将使用以下默认Log4j2配置文件(此处是堆栈附带的):
\ hybris \ bin \ platform \ ext \ core \ resources \ hybris-log4j2.xml
如果查看以上(默认)Log4j2配置文件,您会发现在HAC中看到的记录器与该默认配置文件的记录器匹配。 如果您更改该文件,例如,仅使用rootLogger,则在启动它后将仅在HAC中找到rootLogger(请记住,仍然需要设置属性log4j2.config.xml = hybris-log4j2.xml)。
如果在上面提到的project.properties文件中禁用了属性(log4j2.config.xml),则没有任何变化,看来相同的记录器仍在HAC中弹出。
...因此,我只是从堆栈中删除了配置文件(hybris-log4j2.xml)以确保未加载该文件,然后禁用该属性并再次构建它,同样。 仍然找到相同的记录器...
现在在HAC中显示的记录器仍然相同,但是现在来自:
\ hybris \ bin \ platform \ project.properties
您会发现平台project.properties文件包含相同的记录器。
这意味着您需要在属性文件中用3行指定每个类,以便能够在hac中对其进行配置。 这似乎不是一个合适的解决方案。 在6.0之前的版本中,可以在不显式说明所有单个类的情况下指定日志级别。
FYI,今天在Hybris JIRA中该错误的严重性已提高至严重( https://jira.hybris.com/browse/ECP-1231)。该错误在6.0中被发现,现在已经存在了将近7个月。
很显然,以上内容无法解释为什么除非明确定义,否则记录器不会显示。 我最好的猜测是,由于某种原因,HAC仅显示使用Log4j2样式道具或通过显式xml配置文件定义的内容。
日志记录似乎运行良好,所以我想其他人都已注册,但未在HAC中显示。
我们已在一个项目中实现了可行的修复程序。 但是,此修复很丑陋,因为您需要修补/重新实现其中一个HAC类,而这些类不能通过Spring机制进行修补。 相信我,您不想知道我们是如何做到的。 ;-)
一周热门 更多>