[logback-dev] [JIRA] Commented: (LBCLASSIC-273) Status messages of StatusManager are not cleared upon call to LoggerContext.reset()
Ceki Gulcu (JIRA)
noreply-jira at qos.ch
Thu Jun 9 14:14:53 CEST 2011
[ http://jira.qos.ch/browse/LBCLASSIC-273?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12028#action_12028 ]
Ceki Gulcu commented on LBCLASSIC-273:
--------------------------------------
Hi Joern,
Retaining status messages from previous invocations of Joran may be sometimes useful. This assumption precludes your approach of resetting StatusManager's state which I must admit much simpler than what I have in mind.
Anyhow, the current behavior where status messages from previous invocations of a configurator, i.e. Joran/Gaffer, are printed is indeed confusing and needs to be corrected. The confusing behavior occurs if you enable debug mode via the <configuration debug="true"> directive or if there were warnings or errors in a previous invocation of Joran/Gaffer.
Consequently, I think we should alter logback's behavior for those two cases (debug=true and auto-printing in case of errors) instead of clearing status messages from earlier runs of Joran/Gaffer. I think the required changes are limited to the ConfigurationAction class and the init() method of StaticLoggerBinder. Moreover, since the StaticLoggerBinder#init method is invoked at most once during the lifetime of a context, only ConfigurationAction needs to be modified.
Regarding the level field in BasicManager, AFAIK, it is used by StatusPrinter's printIfErrorsOccured() and printInCaseOfErrorsOrWarnings() methods which in turn are only used by StaticLoggerBinder#init. Thus, from a somewhat narrow point of view there is no need to reset the level field in BasicManager. Of course, from a larger API view point, the current meaning of level is unclear and rather confusing.
To solve this issue, I would start by modifying the end() method in ConfigurationAction so that it only prints status messages added after its begin() method was invoked. This could be achieved by adding a new print method to StatusPrinter. The new print() method would admit a second parameter designating the cut off point.
As mentioned earlier, just resetting the StausManager is possibly a saner approach. Let me know what you think.
> Status messages of StatusManager are not cleared upon call to LoggerContext.reset()
> -----------------------------------------------------------------------------------
>
> Key: LBCLASSIC-273
> URL: http://jira.qos.ch/browse/LBCLASSIC-273
> Project: logback-classic
> Issue Type: Bug
> Affects Versions: 0.9.28
> Reporter: Joern Huxhorn
> Assignee: Logback dev list
>
> See https://github.com/ceki/logback/pull/15
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.qos.ch/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the logback-dev
mailing list