问题标签 [tomcat-juli]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
tomcat - 在 Tomcat JULI 中,“设施特定”记录器是否成为每个 webapp 记录器的根?
我可以期待“嗨!”的日志条目吗?将发射到${catalina.base}/logs/webapp.log
?
Tomcat 配置
{$CATALINA_BASE}/conf/logger.properties
Webapp 级别的日志记录配置
WEB-INF/classes/logger.properties
WAR 部署到/webapp
代码中的用法
WAR 中的代码部署到/webapp
java - Tomcat中tomcat-juli.jar的多个实例
环境:Windows 2003 32 位(我知道,我知道我们正在迁移到 64 位,但很快)
- 阿帕奇雄猫
- 6.0.35
- JAVA_HOME
- CATALINA_HOME
已配置
转到 Tomcat6w.exe 的 Java 选项卡,我们看到:
为什么有不止一个实例:tomcat-juli.jar?
了解Juli是:Java Utility Logging Implementation
我的问题是,即使定义了一个 juli .. 为什么有两个?我们是否只是将其保持在 2 并让系统正常运行?
java - linux中的tomcat:java.lang.NoClassDefFoundError:org/apache/juli/logging/LogFactory
当我在linux中启动tomcat时,我遇到了一个问题。
Using CLASSPATH:/data/apache-tomcat-7.0.47/bin/bootstrap.jar:/data/apache-tomcat-7.0.47/bin/tomcat-juli.jar
我知道找不到该类,但该 jar 已在类路径中。所以为什么?如果您能回答我的问题,我将不胜感激。谢谢。
tomcat - ClassCircularityError: java/util/logging/LogRecord 使用 JavaMelody 和 Tomcat 插件运行 Gradle webapp
当我尝试使用Gradle Tomcat 插件的嵌入式容器启动我的应用程序时,我得到了下面的堆栈跟踪。
当我使用外部 Tomcat 时不会发生这种情况,所以我希望它与 Gradle 的类路径和 Gradle 的内置依赖项有关(我什至不知道如何找出它们是什么)。我已经摸索了一下,人们似乎在某种程度上与 SLF4J 和/或 Logback有类似的问题,我的项目都没有使用它们。我曾尝试使用SLF4J 遗留网桥解决它,但无济于事——可能是因为我在我build.gradle
的文件中声明了它们,而那时为时已晚(Gradle 本身已经拉入/配置了 SLF4J)。
从理论上讲,似乎也可以禁用 JULI 并使 Tomcat 登录到 log4j,这似乎有可能解决问题,但说明都与手动替换 and 中的 JAR 有关$CATALINA_HOME/bin
,$CATALINA_HOME/lib
而我没有第一个想法是如何在 Gradle 上下文中实现这一点。
有任何想法吗?
eclipse - Tomcat 8 无法启动
我已经搜索了很多,但找不到答案。我刚刚升级了 STS(从 3.2 开始),所以我可以试用 Tomcat 8(从 7.0.53 开始)。我有 STS 3.6.2 和 Tomcat 8.0.15。添加 TC8 服务器并对其进行配置后,它拒绝启动,并出现以下根错误:
java.lang.ClassNotFoundException: org.apache.juli.WebappProperties
所以我读了很多,发现这个指南从通过 Juli 的硬编码公共日志切换到 Log4J 并按照它没有任何运气。相关摘录:
Apache Tomcat 的内部日志记录使用 JULI,它是 Apache Commons Logging 的打包重命名分支,默认情况下,它被硬编码为使用 java.util.logging 框架。这确保了 Tomcat 的内部日志记录和任何 Web 应用程序日志记录将保持独立,即使 Web 应用程序使用 Apache Commons Logging。
要将 Tomcat 配置为对其内部日志记录使用替代日志记录框架,必须将硬编码以使用 java.util.logging 的 JULI 实现替换为保留完整 Commons Logging 发现机制的 JULI 实现。这种实现是作为附加组件提供的。可以在下面找到有关如何配置 Tomcat 以使用 Log4j 框架进行内部日志记录的说明。
我还从这里找到了这个答案(对一个不同的问题)和这个问题,后者似乎有一个几乎相同的问题,没有任何解决方案。
我在我的 Tomcat 的 bin/lib 文件夹中搜索了所有 JAR,但没有找到这样的类(包括各种版本的tomcat-juli.jar
和tomcat-juli-adapters.jar
)。除了前面链接的 Tomcat 8 Logging 指南外,我在 Internet 上几乎找不到任何关于此类/接口的参考。那么,问题来了:Tomcat为什么要找这个类?
再次来自链接指南,它是这样说的:
如果使用实现
org.apache.juli.WebappProperties
接口的类加载器(Tomcat 的 Web 应用程序类加载器),那么也会对 执行属性替换${classloader.webappName}
,${classloader.hostName}
并${classloader.serviceName}
分别替换为 Web 应用程序名称、主机名和服务名称。
为什么我的 Tomcat 类加载器实际上没有实现它,或者它为什么没有找到它?
tomcat - Tomcat 服务器日志在文件名中有日期 - rotatable=false 不起作用
我在同一台 Redhat 5 机器上运行了两个 tomcat 6 安装 - 一个是“我的”,一个属于我组织的另一个组。我的目前是6.0.35,另一个是6.0.32。我在为 tomcat 日志生成的文件名最终以日期结尾时遇到问题,这破坏了我们的日志轮换,所以我在这里搜索并发现设置
1catalina.org.apache.juli.FileHandler.rotatable
属性为 false 删除了日期,根据此处的文档:
https://tomcat.apache.org/tomcat-6.0-doc/api/org/apache/juli/FileHandler.html
欢呼; 问题解决了。所以我检查了其他安装是否有同样的问题;是的,他们让我帮助他们解决它。由于他们的 logging.properties 设置与我们的完全相同(全部基于 ${catalina.base}),我只是复制了新的、固定的 logging.properties 文件,该文件适用于我们的安装,并修复了权限。但由于某种原因,它在这里不起作用。
我可以从正在运行的进程的命令行参数确认两者都使用相同的 logging.manager (org.apache.juli.ClassLoaderLogManager),并且第二次安装使用了正确的 logging.properties 配置文件。我什至可以更改该文件中的其他属性(例如前缀、后缀)并重新启动服务器以查看它们在使用的文件名中生效。但无论出于何种原因,第二次安装似乎忽略了 rotatable=false 属性,并拒绝生成名称中没有日期的日志文件。这是我正在使用的 logging.properties 文件:
如果有人有任何建议 - 也许其他可以覆盖 logging.properties 文件的位置?- 我一定会很感激的。
谢谢,
tomcat - 带有 log4j2.xml 的 tomcat 7 内部日志记录
我正在尝试使用log4j2
. 我遵循了Logging server classes in Tomcat 6 with log4j2 中提供的答案。
我正在使用 tomcat 7.0.54 和log4j-core-2.1.jar
, log4j-api-2.1.jar
。我已经下载了附加组件并执行了以下所有步骤,但是当我启动 tomcat 时,出现错误:
这些是我执行的步骤:
- 放入
log4j2.xml
_$CATALINA_BASE/lib
- 下载
tomcat-juli.jar
并tomcat-juli-adapters.jar
从“附加” - 将
log4j-api-2.1.jar
,log4j-core-2.1.jar
,log4j-jul-2.1.jar
, 和tomcat-juli-adapters.jar
from "extras" 放入$CATALINA_HOME/lib
. - 替换
$CATALINA_HOME/bin/tomcat-juli.jar
为tomcat-juli.jar
“附加”。 - 删除
$CATALINA_BASE/conf/logging.properties
- 将日志管理器设置为使用
log4j2-jul
桥 (log4j-jul-2.1.jar
) 中的管理器。更改catalina.sh
以确保类路径包含bin/tomcat-juli.jar
、和lib/log4j-jul-2.1.jar
,并且用于启动 tomcat 的命令包含 -Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager`lib/log4j-api-2.1.jar
lib/log4j-core-2.1.jar
我什至尝试添加这个(LOGGING_CONFIG="-Djava.util.logging.config.file=$CATALINA_HOME/lib/log4j2.xml"
)catalina.sh
但没有奏效。
请让我知道是否有人可以成功配置它。
tomcat - 如何将 Jenkins 与现代日志框架一起使用?
Jenkins 默认使用 Java Utils Logging。这是一个有点过时的日志框架,缺乏现代日志框架(如 Log4J 或 Logback)的许多功能。
如何使用 Logback 或 Log4J 在 Tomcat 上部署/配置 Jenkins?
java - jetty-maven-plugin 和 tomcat-jdbc 8.0.9+ 之间的类路径问题导致 ServiceConfigurationError
我正在使用以下应用程序开发:
jetty-maven-plugin:9.3.2.v20150730
tomcat-jdbc:8.0.8 (它有 tomcat-juli 作为依赖项)
尝试将 tomcat-jdbc jar 升级到 8.0.9+ 之后的任何版本后,我收到以下错误:
java.util.ServiceConfigurationError: org.apache.juli.logging.Log: 提供者 org.eclipse.jetty.apache.jsp.JuliLog 不是子类型
查看这两个版本之间的变更日志,我发现了一些可疑的东西:
“在 JULI LogFactory 中添加一个简单的基于 ServiceLoader 的发现机制,以便更容易独立于 Tomcat 使用依赖于 JULI(如 Jasper)的 JULI 和 Tomcat 组件。补丁由 Greg Wilkins 提供。(markt)”
另外,我发现 Apache Tomcat JDBC 连接池中引入了一个新的系统属性:
org.apache.tomcat.jdbc.pool.onlyAttemptCurrentClassLoader
"控制动态类的类加载,例如 JDBC 驱动程序、拦截器和验证器。如果设置为 false,默认值,池将首先尝试使用当前加载器(即加载池类的类加载器)进行加载,如果类加载尝试使用线程上下文加载器加载失败。将此值设置为 true,如果您希望保持与 Apache Tomcat 8.0.8 及更早版本的向后兼容,并且仅尝试当前加载器。如果未设置,则默认值为 false。
不幸的是,使用该属性使用 jetty:run 启动插件并不能解决问题。
任何帮助,将不胜感激!谢谢!
堆栈跟踪和依赖树:
file - 巨力 tomcat 7 logging.properties
我有一个包含 CustomLoginModule 的 jar 来执行 JAAS 授权。这个罐子位于${CATALINA_BASE}/lib
. 我有一个org.apache.juli.logging.Log
对象可以在不同级别的模块中执行日志记录。我想要一个日志文件,例如jaas.log
写入模块日志的地方,而不是将它们放在Catalina.out
orcatalina.log
中。这是我的logging.properties
文件,使用此配置,我可以创建它,jaas.log
但它保持为空,所有日志都转到了Catalina.out
,catalina.log
有人可以帮忙吗?非常感谢。
logging.properties
文件: