26

好的,所以我对Solr很感兴趣,但我似乎无法弄清楚如何降低日志记录级别,以便在我进行大量导入运行时它实际上运行速度可以接受。

我什至不确定它使用的是哪个日志记录框架(因为,你知道,java.util.logginglog4jcommons-logging 还不够,我们需要将slf4j添加到组合中!)好吧抱歉,不得不这样做轻微的吐槽。:-)

所以我src/main/resources/log4j.properties配置了:

log4j.rootLogger=WARN, console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.conversionPattern=%5p [%t] (%F:%L) - %m%n
org.apache.solr.core=WARN
org.apache.solr.update.processor=WARN

然后为了更好的衡量,我src/main/resources/logging.properties配置了:

.level = WARNING

com.gwtstore.level=ALL
com.appgravity.level=ALL
org.apache.solr.core.level=WARNING
org.apache.solr.update.processor.level=WARNING

然而不知何故,我仍然看到大量以下内容:

INFO: {add=[-7757828706308755634]} 0 0
Feb 21, 2011 6:12:23 PM org.apache.solr.core.SolrCore execute
INFO: [] webapp=null path=/update params={} status=0 QTime=0 

这是我的类路径:

src/test/resources
src/test/java
src/main/resources
src/main/java
idea_rt.jar
junit-rt.jar
deploy.jar
dt.jar
javaws.jar
jce.jar
jconsole.jar
management-agent.jar
plugin.jar
sa-jdi.jar
alt-rt.jar
charsets.jar
classes.jar
jsse.jar
ui.jar
apple_provider.jar
dnsns.jar
localedata.jar
sunjce_provider.jar
sunpkcs11.jar
test-classes
classes
junit-4.8.2.jar
gwt-user-2.1.1.jar
gwt-servlet-2.1.1.jar
servlet-api-2.5.jar
weld-servlet-1.1.0.Final.jar
hibernate-core-3.6.0.Final.jar
antlr-2.7.6.jar
commons-collections-3.2.1.jar
dom4j-1.6.1.jar
hibernate-commons-annotations-3.2.0.Final.jar
slf4j-api-1.6.0.jar
hibernate-jpa-2.0-api-1.0.0.Final.jar
jta-1.1.jar
hibernate-entitymanager-3.6.0.Final.jar
javassist-3.12.0.GA.jar
hibernate-c3p0-3.3.1.GA.jar
c3p0-0.9.1.jar
hibernate-validator-4.1.0.Final.jar
validation-api-1.0.0.GA.jar
cglib-nodep-2.2.jar
javax.inject-1.jar
cdi-api-1.0.jar
jboss-interceptor-api-1.1.jar
jsr250-api-1.0.jar
lucene-core-2.9.1.jar
lucene-snowball-2.9.1.jar
mongo-java-driver-2.4.jar
mysql-connector-java-5.1.6.jar
protobuf-java-2.2.0.jar
proxytoys-1.0.jar
quartz-1.8.4.jar
commons-lang-2.5.jar
commons-httpclient-3.1.jar
commons-logging-1.0.4.jar
commons-codec-1.2.jar
nekohtml-1.9.7.jar
xercesImpl-2.8.1.jar
xml-apis-1.3.03.jar
gwtquickstarter.jar
solr-solrj-1.4.1.jar
commons-io-1.4.jar
commons-fileupload-1.2.1.jar
wstx-asl-3.2.7.jar
stax-api-1.0.1.jar
geronimo-stax-api_1.0_spec-1.0.1.jar
solr-core-1.4.1.jar
lucene-analyzers-2.9.3.jar
lucene-highlighter-2.9.3.jar
lucene-memory-2.9.3.jar
lucene-queries-2.9.3.jar
lucene-misc-2.9.3.jar
lucene-spellchecker-2.9.3.jar
solr-commons-csv-1.4.1.jar
wstx-asl-3.2.7.jar
morphia-0.98s10.jar
androidmarketapi-0.5.jar
openid4java-0.9.5.jar
4

6 回答 6

10
  1. 您需要确保将日志记录属性文件部署到.../yourWebapp/WEB-INF/classes/log4j.properties.

  2. 如果有.../yourWebapp/WEB-INF/classes/log4j.xml文件,这将覆盖属性文件。

  3. Log4j 配置文件的位置也可以被系统属性覆盖。

有关 Log4j 如何获取其配置的更多信息,请查看 Log4j 介绍的这一部分

于 2011-02-22T00:23:15.130 回答
4

以下链接讨论了如何正确配置 Solr 日志记录。

http://lucidworks.lucidimagination.com/display/solr/Configuring+Logging

如果您想临时更改日志记录,则可以从 Solr 管理页面完成。要永久进行更改,您需要将 JDK 日志记录属性文件添加到 Solr Web 应用程序。

对于tomcat,以下是步骤

  1. 在 WB_INF 文件夹中为 solr Web 应用程序创建类目录,即 _%TOMCAT_INSTALL_DIR%/webapps/solr/WEB-INF/classes/logging.properties_
  2. 创建 logging.properties 文件
  3. 添加以下条目以设置日志级别(对于一个类或整个包,日志级别可以从 FINEST 设置为 SEVERE)

org.apache.commons.digester.Digester.level = 最好

org.apache.solr.level = 警告

于 2012-04-23T23:09:24.910 回答
4

如果您只是想从 Solr 服务器完全关闭日志记录,只需访问http://(YOUR-IP):8080/solr/admin并导航到顶部列表中的日志记录选项。

在该页面上,您可以找到为您的 Solr 安装定义的各种日志记录级别的详细表。要么更改他们的父记录器以使他们使用您在应用程序中使用的记录器,要么完全关闭它们。

希望这就是你要找的。谢谢

于 2011-11-09T19:36:38.347 回答
1

在将这个词放入无数个文件中的长时间试验之后WARNING,看起来我终于设法减慢了 Tomcat Solr 日志记录的速度。这对您的情况/环境有什么用完全超出了我的范围,因为到目前为止我的大脑充满了 JAVA 配置。不管怎样,我还是把它写下来,希望能避免将来给某人带来一些痛苦。

我可能在此过程中完全禁用了一些日志记录,因此您可能需要在调试时撤消我将在此处描述的内容(或例如在开发服务器上)。

  1. 在您的配置文件夹中创建一个名为logging.properties的文件,例如,/etc/tomcat...如果它不存在。

  2. 如果logging.properties已经存在,请将所有内容注释掉。不过,您可以选择不注释掉其他行,以防您需要一些日志记录。

  3. 追加/插入以下内容logging.properties

    .level = WARNING
    
  4. 如果文件夹中不存在,则创建一个名为setenv.sh的文件。$CATALINA_HOME/bin(在哪里$CATALINA_HOME?通常在/usr/share/tomcat...但输入
    ps -ef | grep tomcat
    并寻找catalina.home输出中的字符串或类似的东西以确保。)

  5. 追加/插入以下内容setenv.sh

    export JAVA_OPTS="${JAVA_OPTS} -Djava.util.logging.config.file=/etc/tomcat.../logging.properties"
    
  6. 重新启动 Tomcat(例如/etc/init.d/tomcat... restart,取决于您的操作系统)

(替换tomcat...为您的实际 Tomcat 版本)

于 2012-12-19T18:57:24.950 回答
1

为 SOLR 的 log4j 完成此操作后,我可以告诉您这很痛苦。Log4j 不能很好地与 SOLR 一起使用。无论如何,这是我为使 SOLR 与 slf4j 和 log4j 一起工作所做的工作。如果有更简单的方法——太棒了——就去做。

在 solr/lib 中

  • 添加 slf4j-log4j12-1.5.11.jar (确保版本与 slf4j-api-??? 匹配)
  • 删除 slf4j-jdk14-1.5.5.jar (重要 - 否则 log4j 不会被使用)

在您的 webapp 资源中添加您的 log4j.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "/WEB-INF/log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" >
  <appender class="org.apache.log4j.DailyRollingFileAppender" name="FILE" >
    <param name="file" value="logs/jetty.log" />
    <param name="datePattern" value="'.'yyyy-MM" />
    <param name="append" value="true" />
    <layout class="org.apache.log4j.PatternLayout" >
      <param name="ConversionPattern" value="%d [%t] %-5p %C{6} (%F:%L) - %m%n" />
    </layout>
  </appender>
  <root>
    <priority value="error"></priority>
    <appender-ref ref="FILE" />
  </root>
</log4j:configuration>
于 2011-02-22T18:54:54.227 回答
0

除了在最近版本的 Solr 中编写的内容之外,您还可以选择配置慢查询日志记录。您设置了阈值,超过该阈值的查询将被视为长时间运行,并且此类查询将写入单独的日志中。

为此,请添加slowQueryThresholdMillis到您的solrconfig.xml文件中。例如,要将每个运行时间超过 2 秒的查询视为慢,您可以将以下内容放入solrconfig.xml

<slowQueryThresholdMillis>1000</slowQueryThresholdMillis>
于 2020-03-25T16:19:56.860 回答