Joh*_*ohn 7 log4j jrubyonrails tomcat6 jruby-rack ruby-on-rails-3
我花了3个小时的时间来尝试使用Log4j来记录我的Rails应用程序.我终于让它运转了,但我不确定我所做的是否正确.在我最后一次尝试之前,我尝试了各种方法无济于事.所以我真的在这里寻找一些验证,也许还有一些指示和提示 - 诚实地说,任何事情都会受到赞赏.我将我所有的微弱方法总结为以下三次尝试.我希望对每次尝试出错的地方有一些启示 - 即使这意味着我会被撕掉.
我在这里先向您的帮助表示感谢!
我基本上遵循的Apache Tomcat网站上的导向这里.步骤是:
log4j.properties文件$CATALINA_HOME/liblog4j-x.y.z.jar到$CATALINA_HOME/lib$CATALINA_HOME/bin/tomcat-juli.jar与tomcat-juli.jar从的Apache Tomcat Extras文件夹tomcat-juli-adapters.jar从Apache Tomcat上Extras文件夹成$CATALINA_HOME/lib$CATALINA_BASE/conf/logging.properties我应该tomcat.log在我的$CATALINA_BASE/logs文件夹中看到一个文件.
jakarta_service_20101231.logstderr_20101231.logstdout_20101231.logtomcat.log档案吗?$CATALINA_BASE/conf/logging.properties通过执行以下操作修改:
handlers在行中为我的应用程序添加设置:5rails3.org.apache.juli.FileHandler添加Handler特定属性
5rails3.org.apache.juli.FileHandler.level = FINE
5rails3.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
5rails3.org.apache.juli.FileHandler.prefix = rails3.
Run Code Online (Sandbox Code Playgroud)添加Facility特定属性
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
Run Code Online (Sandbox Code Playgroud)修改了web.xml通过添加以下上下文参数为每JRuby的机架自述的日志记录部分(I也相应地修改我的warbler.rb,但我选择改变web.xml直接更快地测试的东西).
<context-param>
<param-name>jruby.rack.logging</param-name>
<param-value>commons_logging</param-value>
</context-param>
Run Code Online (Sandbox Code Playgroud)重启Tomcat
rails3.log),但文件中没有日志信息.我决定用这个新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
Run Code Online (Sandbox Code Playgroud)重启Tomcat
与尝试2相同
注意:我log4j.logger.javax.servlet=DEBUG之所以使用,是因为我在jruby-rack README中读取了所有日志输出都自动重定向到该javax.servlet.ServletContext#log方法.所以我认为这会抓住它,但我显然是错的.
commons_loggingAPI吗?有点不确定为什么尝试2A不起作用,我想,也许我不能commons_logging用于jruby.rack.logging参数,因为它可能不使用commons_loggingAPI ...(但我仍然不确定).我看到slf4j了一个选择.我从来没有听说过它,出于好奇,我决定把它抬起来.在简要地阅读了它之后,我认为它和任何一个一样好,并且决定按照这里的说明进行尝试.
继续尝试2A的设置:
slf4j-api-1.6.1.jar并slf4j-simple-1.6.1.jar进入我的WEB-INF/lib文件夹slf4j-log4j12-1.6.1.jar到我的WEB-INF/lib文件夹中还有VIOLA!我现在有记录信息进入我的rails3.log文件.
所以最大的问题是:
尽管现在记录似乎正在运行,但我真的不确定我所做的是否正确.就像我之前说的那样,我真的在寻找或多或少的验证.如果你有任何指针/提示/建议,我也很感激.谢谢!
我们也做了各种实验,最终选择了 slf4j 选项。我们有 Java 背景,知道 slf4j,所以我们没有进一步深入。
<context-param>
<param-name>jruby.rack.logging</param-name>
<param-value>slf4j</param-value>
</context-param>
Run Code Online (Sandbox Code Playgroud)
顺便说一句,使用 slf4j-log4jxxx.jar 时无需将 slf4j-simple-1.6.1.jar 复制到 tomcat/lib 或 WEB-INF/lib 中
| 归档时间: |
|
| 查看次数: |
2709 次 |
| 最近记录: |