【问题标题】:How do I turn debug logging off, in log4j, for docx4j如何在 log4j 中为 docx4j 关闭调试日志记录
【发布时间】:2012-04-24 02:51:28
【问题描述】:

当我在 jboss as7 上部署我的 maven/spring 应用程序并尝试上传 docx 文件时,我收到以下消息。当我在应用程序的 WYSIWIG 编辑器中查看该消息时,该消息会显示在上传文件的正文中。当我在码头本地运行应用程序时,该消息不显示。我包含了 log4j 和 docx4j 属性文件。我不确定哪个属性可以让我切换错误中提到的 docx4j 类的调试日志记录,到目前为止,我在网络搜索中都是空的。顺便说一句,我的应用程序没有使用 log4j/docx4j xml 文件,从我读到的内容来看,它是一个非此即彼的设置。如果我应该切换到 xml,请告诉我,并告知我需要调整哪些属性,以便我清除此消息。

TY

要隐藏这些消息,请关闭 org.docx4j.convert.out.html.HtmlExporterNG2 的 log4j 调试级别日志记录

log4j.properties

log4j.rootLogger=ERROR,stdout
#Console Appender 
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[%5p] [%t %d{hh:mm:ss}] (%F:%M:%L) %m%n
#Custom assignments
log4j.logger.Controllers=DEBUG,stdout
log4j.logger.Entities=DEBUG,stdout
log4j.logger.Models=DEBUG,stdout
#Disable additivity
log4j.additivity.Controllers=false
log4j.additivity.Entities=false
log4j.additivity.Models=false

docx4j.properties

# Page size: use a value from org.docx4j.model.structure.PageSizePaper enum
# eg A4, LETTER
docx4j.PageSize=LETTER
# Page size: use a value from org.docx4j.model.structure.MarginsWellKnown enum
docx4j.PageMargins=NORMAL
docx4j.PageOrientationLandscape=false
# Page size: use a value from org.pptx4j.model.SlideSizesWellKnown enum
# eg A4, LETTER
pptx4j.PageSize=LETTER
pptx4j.PageOrientationLandscape=false
# These will be injected into docProps/app.xml
# if App.Write=true
docx4j.App.write=true
docx4j.Application=docx4j
docx4j.AppVersion=2.7
# of the form XX.YYYY where X and Y represent numerical values
# These will be injected into docProps/core.xml
docx4j.dc.write=true
docx4j.dc.creator.value=docx4j
docx4j.dc.lastModifiedBy.value=docx4j
#
#docx4j.McPreprocessor=true
# If you haven't configured log4j yourself
# docx4j will autoconfigure it. Set this to true to disable that
docx4j.Log4j.Configurator.disabled=true

【问题讨论】:

  • 您确定这些属性文件在您的类路径中吗?
  • @Jason 我相当肯定他们是。老实说,我不是 100% 确定如何验证文件是否在类路径上。我的 src/main/resources 文件夹中有这些文件。根据我在网上阅读的内容,src 文件夹中的文件会自动包含在类路径中。

标签: spring maven log4j jboss7.x docx4j


【解决方案1】:

我不确定 docx4j 如何配置 log4j,但您可以尝试将 docx4j.Log4j.Configurator.disabled=true 更改为 false

如果这不起作用,您可能想尝试排除服务器 log4j 实现。您可以添加jboss-deployment-structure.xmlexcludes log4j

【讨论】:

  • 我尝试实施您建议的解决方案,但没有解决问题。您包含的链接还提到 JBoss 7 要求使用 PropertyConfigurator.configure() 方法手动调用 log4j 文件。我忽略了解决方案的那个组件,所以我会让你知道它是否有帮助。
  • 也许尝试将 log4j.logger.org.docx4j.convert.out.html.HtmlExporterNG2=INFO 添加到您的 log4j.properties。这种语法可能是正确的,但我认为它是正确的。最后,除非它阻塞了您的日志文件,否则这可能不是什么大问题。它看起来像一个愚蠢的信息性消息。
  • 我尝试将行 log4j.logger.org.docx4j.convert.out.html.HtmlExporterNG2=INFO 添加到道具文件中,但没有任何区别。但是从 jboss-d-s.xml 文件中排除 log4j 然后手动调用 PropertyConfigurator.configure() 清除了消息!非常感谢你!顺便说一句,有问题的消息对用户是可见的,所以我无法在不删除消息的情况下部署应用程序。
【解决方案2】:

在 log4j.properties 或 log4j.xml 文件中将 rootCategory Level 从 DEBUG 更改为 OFF log4j.rootCategory=OFF, SymbolicNameForAppender

【讨论】:

    【解决方案3】:

    我能够使用以下命令禁用日志输出(使用 docx4j 2.8.1):

    Docx4jProperties.getProperties().setProperty(
        "docx4j.Log4j.Configurator.disabled", "true");
    Log4jConfigurator.configure();
    

    请注意,如果没有第二条语句,则不会禁止记录。

    【讨论】:

    • Log4jConfigurator 不是 docx4j 或 log4j 库的一部分
    【解决方案4】:

    使用以下代码:

    Docx4jProperties.getProperties().setProperty("docx4j.Log4j.Configurator.disabled", "true");
    Log4jConfigurator.configure();            
    org.docx4j.convert.out.pdf.viaXSLFO.Conversion.log.setLevel(Level.OFF);
    

    【讨论】:

      【解决方案5】:

      我们在使用 docx4j 和 Spring Boot 时遇到了类似的问题。

      由于spring-boot-starter-logging 自动配置logback-classic 用作记录器的实现,因此只需为包设置正确的级别。在我们的例子中,我们不需要来自docx4j 的任何日志记录,因此将以下行添加到 application.properties 禁用了“docx4j”的整个输出:

      logging.level.org.docx4j=OFF
      

      如果您特别需要禁用文档的控制台打印,则需要在此特定文件上设置关闭日志级别:

      logging.level.org.docx4j.model.datastorage.migration.VariablePrepare=OFF
      

      编辑:我知道这个主题很旧,但是在使用 Spring Boot 时针对这个主题的资源非常有限。我希望这对将来的人有所帮助。

      【讨论】:

        【解决方案6】:

        使用这个:

        LogManager.getLogger("org.docx4j").setLevel(Level.OFF);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2010-09-07
          • 1970-01-01
          • 2021-06-28
          • 1970-01-01
          • 2015-10-17
          • 2016-01-18
          • 1970-01-01
          相关资源
          最近更新 更多