I've followed my application's usage of the `setFile()` command up the chain of invocations to try to figure out what it's doing so that I can implement something different for Log4j v2.
Ultimately, the function is invoked by the `main()` method of a file `SandcastleService.jar`, where it is used to change the FileAppender output file of the Root Logger. I don't know enough about Java to investigate further, and I need help. It is obvious from the structure and nature of the library I'm working on that no one was ever expected to type `$ java SandcastleService` at the command line to invoke this, which is the only use of the `main()` method I know about. When the library is built, it is part of a JAR file `beaches.jar`. That JAR file has a manifest that includes a field `Main-Class: org.file.path.tides.scheduler`. So, `SandcastleService.main()` is not used for that purpose. Does anyone have any ideas for how I can figure out what `SandcastleService.main()` is doing with the Log4j v1 `setFile()` method? The string "SandcastleService.main(" doesn't appear anywhere else in the code base, so it's not directly invoked anywhere. Joel On Fri, Aug 26, 2022 at 6:21 PM Ralph Goers <ralph.go...@dslextreme.com> wrote: > > > > On Aug 26, 2022, at 1:45 PM, Joel Griffith <jgrif...@nd.edu> wrote: > > > > > > Its purpose is to change the output file of the Root Logger's > FileAppender > > (we assume it has only one), or to add a new FileAppender to the Root > > Logger if one does not already exist. I can eliminate this use of > > FileAppender.setFile() by rewriting the entire function for Log4j v2. > How > > changing a FileAppender's output file done in v2? I cannot find any hint > > online. I read some about Lookups, which someone mentioned, but the only > > page I found was all configuration, no code. > > > > The only way to change the output destination would be to create a new > Appender with the new target file and replace the current appender with it. > The file attribute of a FileAppender in Log4j 2 is immutable. In the > RollingFileAppender > you cannot change the name of the target file but the file being written > to is > moved and a new file with the same name is created when a rollover occurs. > > In order to have the ability to change the file at any time locking would > be > required and Log4j 2 minimizes locking wherever it can. > > But rather than just copying code and trying to figure out how to emulate > it > with Log4j 2 it would be better to figure out what the requirement is that > is > driving the need to change the file name and then ask how that requirement > can be met. > > Ralph > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: log4j-user-unsubscr...@logging.apache.org > For additional commands, e-mail: log4j-user-h...@logging.apache.org > >