启动 Tomcat 中嵌入的 elasticsearch 时创建了意外的 transaction.log 文件
Unexpected transaction.log file created when starting elasticsearch embedded in Tomcat
我正在使用 elasticsearch-transport-wares 到 运行 嵌入在 Tomcat 中的 Elasticsearch。
无论 path.logs
的值在 elasticsearch.yml
中是什么,一个空的 transaction.log
文件总是在我 运行 启动我的 Tomcat.
当我启动一个非嵌入式 Elasticsearch 服务器时,我没有看到在任何地方创建任何 transaction.log
文件...
我的问题是:
- 你知道这个空
transaction.log
文件的用途是什么吗?
- 如何配置 elasticsearch 以选择必须存储此文件的位置(例如
path.logs
来决定 elasticsearch 日志的存储位置)?
因此,当我的服务器从没有写权限的路径启动时,我得到了这个堆栈跟踪(记录为 INFO):
2016-01-28 10:26:15,174 | INFO | Initializing elasticsearch Node 'node' [o.a.c.c.C.[.[.[/es-embedded]<localhost-startStop-1>]
log4j:ERROR setFile(null,true) call failed.
java.io.FileNotFoundException: transaction.log (Permission denied)
at java.io.FileOutputStream.open0(Native Method)
at java.io.FileOutputStream.open(FileOutputStream.java:270)
at java.io.FileOutputStream.<init>(FileOutputStream.java:213)
at java.io.FileOutputStream.<init>(FileOutputStream.java:133)
at org.apache.log4j.FileAppender.setFile(FileAppender.java:294)
at org.apache.log4j.RollingFileAppender.setFile(RollingFileAppender.java:207)
at org.apache.log4j.FileAppender.activateOptions(FileAppender.java:165)
at org.apache.log4j.config.PropertySetter.activate(PropertySetter.java:307)
at org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:172)
at org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:104)
at org.apache.log4j.PropertyConfigurator.parseAppender(PropertyConfigurator.java:842)
at org.apache.log4j.PropertyConfigurator.parseCategory(PropertyConfigurator.java:768)
at org.apache.log4j.PropertyConfigurator.parseCatsAndRenderers(PropertyConfigurator.java:672)
at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:516)
at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:580)
at org.apache.log4j.helpers.OptionConverter.selectAndConfigure(OptionConverter.java:526)
at org.apache.log4j.LogManager.<clinit>(LogManager.java:127)
at org.apache.log4j.Logger.getLogger(Logger.java:104)
at org.elasticsearch.common.logging.log4j.Log4jESLoggerFactory.newInstance(Log4jESLoggerFactory.java:39)
at org.elasticsearch.common.logging.ESLoggerFactory.newInstance(ESLoggerFactory.java:74)
at org.elasticsearch.common.logging.ESLoggerFactory.getLogger(ESLoggerFactory.java:66)
at org.elasticsearch.common.logging.Loggers.getLogger(Loggers.java:122)
at org.elasticsearch.common.MacAddressProvider.<clinit>(MacAddressProvider.java:32)
at org.elasticsearch.common.TimeBasedUUIDGenerator.<clinit>(TimeBasedUUIDGenerator.java:41)
at org.elasticsearch.common.Strings.<clinit>(Strings.java:48)
at org.elasticsearch.common.settings.ImmutableSettings.<init>(ImmutableSettings.java:73)
at org.elasticsearch.common.settings.ImmutableSettings$Builder.build(ImmutableSettings.java:1142)
at org.elasticsearch.node.NodeBuilder.settings(NodeBuilder.java:89)
at org.elasticsearch.wares.NodeServlet.init(NodeServlet.java:111)
at javax.servlet.GenericServlet.init(GenericServlet.java:158)
at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1284)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1197)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1087)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5267)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5557)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652)
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1095)
at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1930)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
您可以更改 elasticsearch.yml
文件中的 path.logs
设置,然后将 elasticsearch.yml
配置文件添加到 WAR 的 /WEB-INF
文件夹中,然后它将被拾起。
你应该可以开始了。
至于 transaction.log 文件,您确定它不是您在 Log4J 配置中配置的文件吗?
我正在使用 elasticsearch-transport-wares 到 运行 嵌入在 Tomcat 中的 Elasticsearch。
无论 path.logs
的值在 elasticsearch.yml
中是什么,一个空的 transaction.log
文件总是在我 运行 启动我的 Tomcat.
当我启动一个非嵌入式 Elasticsearch 服务器时,我没有看到在任何地方创建任何 transaction.log
文件...
我的问题是:
- 你知道这个空
transaction.log
文件的用途是什么吗? - 如何配置 elasticsearch 以选择必须存储此文件的位置(例如
path.logs
来决定 elasticsearch 日志的存储位置)?
因此,当我的服务器从没有写权限的路径启动时,我得到了这个堆栈跟踪(记录为 INFO):
2016-01-28 10:26:15,174 | INFO | Initializing elasticsearch Node 'node' [o.a.c.c.C.[.[.[/es-embedded]<localhost-startStop-1>]
log4j:ERROR setFile(null,true) call failed.
java.io.FileNotFoundException: transaction.log (Permission denied)
at java.io.FileOutputStream.open0(Native Method)
at java.io.FileOutputStream.open(FileOutputStream.java:270)
at java.io.FileOutputStream.<init>(FileOutputStream.java:213)
at java.io.FileOutputStream.<init>(FileOutputStream.java:133)
at org.apache.log4j.FileAppender.setFile(FileAppender.java:294)
at org.apache.log4j.RollingFileAppender.setFile(RollingFileAppender.java:207)
at org.apache.log4j.FileAppender.activateOptions(FileAppender.java:165)
at org.apache.log4j.config.PropertySetter.activate(PropertySetter.java:307)
at org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:172)
at org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:104)
at org.apache.log4j.PropertyConfigurator.parseAppender(PropertyConfigurator.java:842)
at org.apache.log4j.PropertyConfigurator.parseCategory(PropertyConfigurator.java:768)
at org.apache.log4j.PropertyConfigurator.parseCatsAndRenderers(PropertyConfigurator.java:672)
at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:516)
at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:580)
at org.apache.log4j.helpers.OptionConverter.selectAndConfigure(OptionConverter.java:526)
at org.apache.log4j.LogManager.<clinit>(LogManager.java:127)
at org.apache.log4j.Logger.getLogger(Logger.java:104)
at org.elasticsearch.common.logging.log4j.Log4jESLoggerFactory.newInstance(Log4jESLoggerFactory.java:39)
at org.elasticsearch.common.logging.ESLoggerFactory.newInstance(ESLoggerFactory.java:74)
at org.elasticsearch.common.logging.ESLoggerFactory.getLogger(ESLoggerFactory.java:66)
at org.elasticsearch.common.logging.Loggers.getLogger(Loggers.java:122)
at org.elasticsearch.common.MacAddressProvider.<clinit>(MacAddressProvider.java:32)
at org.elasticsearch.common.TimeBasedUUIDGenerator.<clinit>(TimeBasedUUIDGenerator.java:41)
at org.elasticsearch.common.Strings.<clinit>(Strings.java:48)
at org.elasticsearch.common.settings.ImmutableSettings.<init>(ImmutableSettings.java:73)
at org.elasticsearch.common.settings.ImmutableSettings$Builder.build(ImmutableSettings.java:1142)
at org.elasticsearch.node.NodeBuilder.settings(NodeBuilder.java:89)
at org.elasticsearch.wares.NodeServlet.init(NodeServlet.java:111)
at javax.servlet.GenericServlet.init(GenericServlet.java:158)
at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1284)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1197)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1087)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5267)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5557)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652)
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1095)
at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1930)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
您可以更改 elasticsearch.yml
文件中的 path.logs
设置,然后将 elasticsearch.yml
配置文件添加到 WAR 的 /WEB-INF
文件夹中,然后它将被拾起。
你应该可以开始了。
至于 transaction.log 文件,您确定它不是您在 Log4J 配置中配置的文件吗?