Community Tip - New to the community? Learn how to post a question and get help from PTC and industry experts! X
Hi
We have a number of customization api's running in Windchill that take effect when promotion occurs. As this is generating a fair amount of logging I decided to put this in a separated log file.
I use next configuration for this (log4jMethodServer.properties):
This creates also a log file for both method server processes (javaMS.exe) and one for the background method server (avaBGM.exe). The loggers with id 21024 & 14912 are method server logs that I do not want. The are empty too.
What am I doing wrong to get these extra logfiles for the method servers? I am only interested in deriving the output from original the BM method server to the CustomLogger.
Solved! Go to Solution.
Hi @berny2U
I have to add that I set my background server by my own settings called BGMethodServer
This is a reason why you see different setting.
The point is to set -Dlog4j2.configurationFile\=$(wt.method.log4j.config) separately to a background method server.
This can be little bit complicated but it is possible.
in your case there is a line with wt.manager.cmd.BackgroundMethodServer=$(wt.manager.cmd.MethodServer) wt.method.serviceName\={1} wt.queue.executeQueues\=true wt.queue.queueGroup\={5} wt.intersvrcom.sitePing\=false wt.adapter.enabled\=false wt.method.minPort\=$(wt.method.bg.minPort) wt.method.maxPort\=$(wt.method.bg.maxPort)
You need to define own variable for $(wt.manager.cmd.MethodServer)
All settings started with "$(" pointing to another line where the setting is written as a variable.
in my case I rewrite original setting to my own one.
wt.manager.cmd.BackgroundMethodServer=$(wt.manager.cmd.BGMethodServer) wt.method.serviceName\={1} wt.queue.executeQueues\=true wt.queue.queueGroup\={5} wt.intersvrcom.sitePing\=false wt.adapter.enabled\=false wt.method.minPort\=$(wt.method.bg.minPort) wt.method.maxPort\=$(wt.method.bg.maxPort)
wt.manager.cmd.BackgroundMethodServer.java.cmd.quoted=$(wt.manager.cmd.MethodServer.java.cmd.quoted)
wt.manager.cmd.BackgroundMethodServer.java.extra.args=$(wt.manager.cmd.MethodServer.java.extra.args)
wt.manager.cmd.BackgroundMethodServer.param.15=
wt.manager.cmd.BackgroundMethodServerLauncher=$(wt.manager.cmd.MethodServerLauncher)
wt.manager.cmd.BGMethodServer=$(wt.manager.cmd.BGMethodServer.java.command)
wt.manager.cmd.BGMethodServer.java.command=$(wt.java.bgmscmd.quoted) $(wt.manager.cmd.common.java.args) $(wt.manager.cmd.common.psm.agent.args.MS) -Dlog4j2.configurationFile\=WEB-INF/log4jBackgroundMethod.properties $(wt.manager.cmd.MethodServer.jmx.args) $(wt.manager.cmd.MethodServer.debug.args) {12} -Xms{14}m -Xmx{4}m $(wt.manager.cmd.MethodServer.platform.java.args) {11} wt.method.MethodServerMain
wt.java.bgmscmd.quoted=$(wt.java.bgmscmd)
wt.java.bgmscmd=C\:\\Windchill_12.0\\Java\\bin\\BackgroundSrv.exe
the reason of the BackgroundSrv.exe is to see this name in process explorer instead of java.exe. (BackgroundSrv.exe is just copy of java.exe)
)
PetrH
Hi @berny2U
It is normal behavior, that the log file is created for each MS process.
The log4J configuration file applies for all processes so this is the reason that file is created for all of them.
If you need to create the log file for BacgroundMethod server, you need to separate the log4J configuration for bacgroundMethod server.
in wt.properties find following line where cmd definition is configured for bacgroundMS process.
wt.manager.cmd.BGMethodServer.java.command=$(wt.java.bgmscmd.quoted) $(wt.manager.cmd.common.java.args) $(wt.manager.cmd.common.psm.agent.args.MS) -Dlog4j2.configurationFile\=$(wt.method.log4j.config) $(wt.manager.cmd.MethodServer.jmx.args) $(wt.manager.cmd.MethodServer.debug.args) {12} -Xms{14}m -Xmx{4}m $(wt.manager.cmd.MethodServer.platform.java.args) {11} wt.method.MethodServerMain
rewrite the $(wt.method.log4j.config) to your new separate log4j config file for bacgroundserver proces: example WEB-INF/log4jBackgroundMethod.properties. In that file you can define your log configuration just for BG.exe.
My suggestion is to create ootb copy of log4jMethodServer.properties file and in the new one add your configuration
Also, I would say that this change you should do by xconfmanager to propagate this change correctly.
PetrH
Hi @HelesicPetr
We are at version 12.0.2.6 and do see the commands for the background worker a bit different;
wt.manager.cmd.BackgroundMethodServer=$(wt.manager.cmd.MethodServer) wt.method.serviceName\={1} wt.queue.executeQueues\=true wt.queue.queueGroup\={5} wt.intersvrcom.sitePing\=false wt.adapter.enabled\=false wt.method.minPort\=$(wt.method.bg.minPort) wt.method.maxPort\=$(wt.method.bg.maxPort)
wt.manager.cmd.BackgroundMethodServer.java.cmd.quoted="$(wt.java.cmdBGM)"
wt.manager.cmd.BackgroundMethodServer.java.extra.args=-XX\:+DisableExplicitGC
wt.manager.cmd.BackgroundMethodServerLauncher=$(wt.manager.cmd.MethodServerLauncher)
I am not so experienced in the configuration of Windchill, can you explain what option should be set here ?
Regards
Bernard
Hi @berny2U
I have to add that I set my background server by my own settings called BGMethodServer
This is a reason why you see different setting.
The point is to set -Dlog4j2.configurationFile\=$(wt.method.log4j.config) separately to a background method server.
This can be little bit complicated but it is possible.
in your case there is a line with wt.manager.cmd.BackgroundMethodServer=$(wt.manager.cmd.MethodServer) wt.method.serviceName\={1} wt.queue.executeQueues\=true wt.queue.queueGroup\={5} wt.intersvrcom.sitePing\=false wt.adapter.enabled\=false wt.method.minPort\=$(wt.method.bg.minPort) wt.method.maxPort\=$(wt.method.bg.maxPort)
You need to define own variable for $(wt.manager.cmd.MethodServer)
All settings started with "$(" pointing to another line where the setting is written as a variable.
in my case I rewrite original setting to my own one.
wt.manager.cmd.BackgroundMethodServer=$(wt.manager.cmd.BGMethodServer) wt.method.serviceName\={1} wt.queue.executeQueues\=true wt.queue.queueGroup\={5} wt.intersvrcom.sitePing\=false wt.adapter.enabled\=false wt.method.minPort\=$(wt.method.bg.minPort) wt.method.maxPort\=$(wt.method.bg.maxPort)
wt.manager.cmd.BackgroundMethodServer.java.cmd.quoted=$(wt.manager.cmd.MethodServer.java.cmd.quoted)
wt.manager.cmd.BackgroundMethodServer.java.extra.args=$(wt.manager.cmd.MethodServer.java.extra.args)
wt.manager.cmd.BackgroundMethodServer.param.15=
wt.manager.cmd.BackgroundMethodServerLauncher=$(wt.manager.cmd.MethodServerLauncher)
wt.manager.cmd.BGMethodServer=$(wt.manager.cmd.BGMethodServer.java.command)
wt.manager.cmd.BGMethodServer.java.command=$(wt.java.bgmscmd.quoted) $(wt.manager.cmd.common.java.args) $(wt.manager.cmd.common.psm.agent.args.MS) -Dlog4j2.configurationFile\=WEB-INF/log4jBackgroundMethod.properties $(wt.manager.cmd.MethodServer.jmx.args) $(wt.manager.cmd.MethodServer.debug.args) {12} -Xms{14}m -Xmx{4}m $(wt.manager.cmd.MethodServer.platform.java.args) {11} wt.method.MethodServerMain
wt.java.bgmscmd.quoted=$(wt.java.bgmscmd)
wt.java.bgmscmd=C\:\\Windchill_12.0\\Java\\bin\\BackgroundSrv.exe
the reason of the BackgroundSrv.exe is to see this name in process explorer instead of java.exe. (BackgroundSrv.exe is just copy of java.exe)
)
PetrH
Thanks Petrh
That should be ok although i have to learn about this and apply it.
Regards
Bernard