gpt4 book ai didi

log4j - 在 tomcat jruby-rack 上使用 log4j 记录 Rails 3 应用程序

转载 作者:行者123 更新时间:2023-12-04 12:49:45 26 4
gpt4 key购买 nike

我只是花了 3 个小时的大部分时间来尝试使用 Log4j 记录我的 Rails 应用程序。我终于让它工作了,但我不确定我所做的是否正确。直到最后一次尝试,我尝试了各种方法都无济于事。所以我真的在这里寻找一些验证,也许还有一些指示和技巧——老实说,任何事情都会受到赞赏。我将我所有的微弱方法总结为以下三种尝试。我希望对我每次尝试出错的地方有所启发——即使这意味着我被撕毁了。

我在这里先向您的帮助表示感谢!

系统规范

  • 导轨 3.0
  • Windows Server 2008
  • Log4j 1.2
  • Tomact 6.0.29
  • Java 6

  • 尝试 1 - 配置 Tomcat 以使用 Log4J

    我基本上遵循了 Apache Tomcat 网站 here 上的指南。 .步骤是:
  • 创建一个 log4j.properties文件在 $CATALINA_HOME/lib
  • 下载并复制 log4j-x.y.z.jar进入 $CATALINA_HOME/lib
  • 替换 $CATALINA_HOME/bin/tomcat-juli.jartomcat-juli.jar来自 Apache Tomcat Extras 文件夹
  • 复制 tomcat-juli-adapters.jar从 Apache Tomcat Extras 文件夹到 $CATALINA_HOME/lib
  • 删除 $CATALINA_BASE/conf/logging.properties
  • 启动Tomcat(作为服务)

  • 根据指南的预期结果

    我应该看到一个 tomcat.log文件在我的 $CATALINA_BASE/logs文件夹。

    实际结果
  • 没有tomcat.log
  • 而是看到了三个标准日志
  • jakarta_service_20101231.log
  • stderr_20101231.log
  • stdout_20101231.log


  • 我不应该至少看到一个 tomcat.log文件?

  • 尝试 2 - 使用默认的 Tomcat 日志记录(commons-logging)
  • 恢复了之前设置中的所有更改
  • 修改 $CATALINA_BASE/conf/logging.properties通过执行以下操作:
  • handlers 中为我的应用程序添加设置线路:5rails3.org.apache.juli.FileHandler
  • 添加处理程序特定属性
    5rails3.org.apache.juli.FileHandler.level = FINE
    5rails3.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
    5rails3.org.apache.juli.FileHandler.prefix = rails3.
  • 添加设施特定属性
    org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/rails3].level = INFO
    org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/rails3].handlers = 4host-manager.org.apache.juli.FileHandler
  • 修改了我的 web.xml通过按照 jruby-rack README 的日志记录部分添加以下上下文参数(我也相应地修改了我的 warbler.rb,但我选择直接更改 web.xml 以更快地测试)。
    <context-param>
    <param-name>jruby.rack.logging</param-name>
    <param-value>commons_logging</param-value>
    </context-param>
  • 重启Tomcat

  • 结果
  • 已创建日志文件 ( rails3.log ),但文件中没有日志信息。

  • 尝试 2A - 在现有设置中使用 Log4j

    我决定用这个新的 web.xml 再试一次 Log4j环境。
  • 已复制 log4j.jar进入我的 WEB-INF/lib文件夹
  • 创建了一个 log4j.properties文件并将其放入 WEB-INF/classes
    log4j.rootLogger=INFO, R
    log4j.logger.javax.servlet=DEBUG

    log4j.appender.R=org.apache.log4j.RollingFileAppender
    log4j.appender.R.File=${catalina.base}/logs/rails3.log
    log4j.appender.R.MaxFileSize=5036KB
    log4j.appender.R.MaxBackupIndex=4
    log4j.appender.R.layout=org.apache.log4j.PatternLayout
    log4j.appender.R.layout.ConversionPattern=%d{dd MMM yyyy HH:mm:ss} [%t] %-5p %c %x - %m%n
  • 重启Tomcat

  • 结果

    与尝试 2 相同

    注意:我用过 log4j.logger.javax.servlet=DEBUG因为我在 jruby-rack README 中读到所有日志输出都会自动重定向到 javax.servlet.ServletContext#log方法。所以我认为这会捕获它,但我显然错了。


  • 为什么这不起作用?
  • Log4J 不是使用 commons_logging API?

  • 尝试 3 - 尝试 slf4j(有效)

    有点不确定为什么尝试 2A 不起作用,我心里想,也许我不能用 commons_loggingjruby.rack.logging参数,因为它可能没有使用 commons_logging API ...(但我仍然不确定)。我看到了 slf4j作为一种选择。我从来没有听说过,出于好奇,我决定查一查。简要阅读后,我认为它和任何镜头一样好,并决定按照说明进行尝试 here .

    继续尝试 2A 的设置:
  • 已复制 slf4j-api-1.6.1.jarslf4j-simple-1.6.1.jar进入我的 WEB-INF/lib文件夹
  • 我也复制了slf4j-log4j12-1.6.1.jar进入我的 WEB-INF/lib文件夹
  • 重启Tomcat

  • 中提琴 !我现在有登录信息进入我的 rails3.log 文件。

    所以最大的问题是:

    跆拳道?

    尽管日志记录现在似乎可以正常工作,但我真的不确定我所做的是否正确。所以就像我之前说的,我真的或多或少地在寻找一些验证。如果您有任何指示/提示/建议,我也将不胜感激。谢谢!

    最佳答案

    我们也做了各种实验,最终选择了 slf4j 选项。来自 Java 背景的我们知道 slf4j,所以我们没有更进一步。

    <context-param>
    <param-name>jruby.rack.logging</param-name>
    <param-value>slf4j</param-value>
    </context-param>

    btw,使用 slf4j-log4jxxx.jar 时无需将 slf4j-simple-1.6.1.jar 复制到 tomcat/lib 或 WEB-INF/lib

    关于log4j - 在 tomcat jruby-rack 上使用 log4j 记录 Rails 3 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4571790/

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