[
https://issues.apache.org/jira/browse/LOG4J2-3691?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17889534#comment-17889534
]
Volkan Yazici commented on LOG4J2-3691:
---------------------------------------
{quote}
Admin users (special role) could add appenders and loggers, persistently change
log-levels of both, etc. We primarily use rolling-file appenders so they could
modify maxFiles or the logfile rollover size, etc.
...
installation-specific log4j configuration (in external directory)
...
we primarily only use RollingFileAppender, DefaultRolloverStrategy,
PatternLayout, and SizeBasedTriggeringPolicy. Although we don't restrict
anything - customer projects can configure as they wish.
{quote}
[~JWT007], if your common configuration is pretty much the same, but only
varies on `maxFiles`, `logfile`, etc. what you can also consider implementing
is:
* Inject `maxFiles`, `logfile`, etc. via a custom `PropertySource` and allow
changing this `PS` in the admin UI. You can trigger a `Log4j#reconfigure()`
when the `PS` is updated, and so on.
* For more customization, accept a fully-blown Log4j configuration in a
`<textarea>`, upload this `log4j-admin-override.xml` to _the external
directory_, include it in the composite configuration, and
`Log4j#reconfigure()`.
> Documentation: CompositeTriggeringPolicy - nested <Policies> element?
> ---------------------------------------------------------------------
>
> Key: LOG4J2-3691
> URL: https://issues.apache.org/jira/browse/LOG4J2-3691
> Project: Log4j 2
> Issue Type: Bug
> Components: Configuration, Documentation
> Affects Versions: 2.24.0
> Reporter: Jeff Thomas
> Priority: Minor
>
> According to my JetBrains AI Assistant :):
> "According to the Log4j 2 configuration guidelines, nesting a {{Policies}}
> element within another {{Policies}} element is not supported. Each
> {{RollingFile}} appender should have one {{Policies}} element, which in turn,
> directly contains the individual policies."
> Example:
> {code:java}
> <RollingFile name="FILE"
> fileName="app.log"
> filePattern="app.%d{yyyy-MM-dd}.%i.log">
> <JsonTemplateLayout/>
> <Policies>
> <OnStartupTriggeringPolicy/>
> <Policies>
> <SizeBasedTriggeringPolicy/>
> <TimeBasedTriggeringPolicy/>
> </Policies>
> </Policies>
> </RollingFile> {code}
> I could not find an explicit statement regarding this in the new Log4j 2.x
> documentation.
> Also in the code of the `CompositeTriggeringPolicy` class it seems that there
> is no validation check to ensure that this does not happen.
> If this is in fact, undesirable maybe the documentation should state this and
> also enforce it in code (or alternatively aggregate the policies - flatten
> them to the top-level).
> Side note: the documentation and implementation don't mention adding multiple
> policies of the same type to a composite-policy (i.e. two
> "CronTriggeringPolicy" elements) - whether this is supported or actively
> discouraged.
> NOTE: The same question could be applied to the `CompositeFilter`constructor
> not checking if one of the provided filters is also a `CompositeFilter`.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)