I'm using elasticsearch-transport-wares to run an Elasticsearch embedded in Tomcat.
Whatever the value of path.logs
is in the elasticsearch.yml
, an empty transaction.log
file is always created at the path where I run the command to start my Tomcat.
When I start a not embedded Elasticsearch server I didn't see any transaction.log
file created anywhere...
My question is:
transaction.log
file ?path.logs
to decide where your elasticsearch logs are stored) ?Consequently when my server is started from a path with no write permission, I got this stacktrace (log as 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)
You can change the path.logs
settings in the elasticsearch.yml
file and then add your elasticsearch.yml
configuration file inside the /WEB-INF
folder of your WAR and it will be picked up.
You should be good to go.
As for the transaction.log file, are you sure it's not a file that you have configured in your Log4J configuration?