[
https://issues.apache.org/jira/browse/LOG4J2-112?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13495519#comment-13495519
]
David Johle commented on LOG4J2-112:
------------------------------------
Yes, there are some debates about the performance increases of using final for
methods/classes...
A final method (or method of a class marked final) call can avoid some internal
lookup steps because there is no need to check for overrides/etc. However,
several people point out that this sort of optimization is now performed
automatically at runtime by some VMs for a class not marked final that is also
not extended by anything. So if that is the case, performance difference could
become mostly irrelevant.
Furthermore, this is the rename action, which I believe is only called when a
rollover is triggered, which is a relatively infrequent call (at least when
comparing it to something like the logging event methods). This just reduces
the value of any marginal performance gains/losses that result from adding this
capability.
Now, to expand further on this topic, I have run into a snag on my item #2 as
well. The purge() method is private, not protected. So that means no
extending on that front as well.
> Why is FileRenameAction a final class?
> --------------------------------------
>
> Key: LOG4J2-112
> URL: https://issues.apache.org/jira/browse/LOG4J2-112
> Project: Log4j 2
> Issue Type: Question
> Components: Core
> Affects Versions: 2.0-beta2
> Reporter: David Johle
> Priority: Minor
> Labels: features
> Original Estimate: 5m
> Remaining Estimate: 5m
>
> First some backstory:
> I have a special need to allow the use of a common/shared log file within a
> clustered environment. I have already taken other measures necessary to
> handle the simultaneous writing of logging events to the same file w/o
> corruption. I have been using log4j 1.2.x for a while for this purpose, and
> it's been working in a production environment for quite some time actually.
> What I did there is make my own DailyRollingSharedFileAppender (based on the
> old DailyRollingFileAppender) that contains some custom logic & locking to
> provide a safe mechanism for handling file rollovers on the shared files.
> I am currently in the process of upgrading to log4j2 for several reasons, and
> as such am working to re-implement this concept by making a couple of custom
> classes to augment log4j2 accordingly. Given the new architecture (which is
> very nice, BTW) I think this should actually a fairly straightforward
> process...
> 1) Create a SharedFileRenameAction that extends FileRenameAction (has my
> custom logic & locking)
> 2) Create a SharedFileRolloverStrategy that extends DefaultRolloverStrategy
> (no gz/zip support, uses SharedFileRenameAction)
> 3) Reference SharedFileRolloverStrategy in log4j2.xml for the appenders using
> shared files
> So for this, I only need to override a few things in these classes, and as
> such I'd rather extend them than completely write new ones. For #2 this is
> not an issue, but for #1 I have hit a snag:
> public final class FileRenameAction extends ActionBase
> (note: using beta-2 here, in trunk ActionBase is now AbstractAction)
> I've marked this issue as "Question" for now, so here is that question:
> Why is FileRenameAction marked final?
> If there was no intentional restriction on extensibility here, then I'd like
> to make this issue an "Improvement" instead, requesting that this class no
> longer have the final qualifier.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]