Your issue is related to you starting and stopping the LoggerContext while your application is in an unknown state. I can think of a few ways to deal with this.
1. Never shutdown the LoggerContext and only use RoutingAppenders. Each application should set its own key for the Route so that each uses their own Appenders. During shutdown of the application only shutdown the Appenders that apply to the applications Route. 2. Partition your application so that the main application and each batch job use their own ClassLoader. The ClassLoaderContextSelector (the default) will then create a LoggerContext for each ClassLoader and each can have its own configuration. 3. Use the JndiContextSelector and have each application and batch job use a unique JNDI name. This will allow each to have its own LoggerContext. However, if any of the classes use static Loggers and those classes are in a ClassLoader shared by the application and batch jobs then those Loggers will be tied to the LoggerContext used when they Loggers were first obtained. So this solution may not completely work for you. Ralph > On Jul 25, 2023, at 6:24 AM, Danish Arif <danishmari...@gmail.com> wrote: > > Hi Log4j2 Team, > > My query is related to log4j2 working and uses of > LogManager.getLogger(String name); method. > > My use case is that my application uses the above mentioned method to get > logger and log. Appender and Logger have been set in log4j2.xml file. We > stop the Logger by getting all core appenders , removing them , then > stopping them and then using the LogManager.shutdown() method. > > The issue or anomaly arises when an update batch script starts the new > instance of the same application and the old instance takes some time to > exit, resulting in new instance getting the same logger using > LogManager.getLogger("AppName"); and writing in the same log file. > > Once the 1st/old instance exists after a few seconds, it closes all the > logging and nothing on the file gets written even when the 2nd/new instance > is still up and running. > > Kindly advise what can be done to handle this type of scenario when there > is no communication between the instances and are totally independent and > agnostic of each other. > > Regards, > Danish Arif