From: Olav Sandstaa Date: March 15 2009 9:21pm Subject: Re: Proposal: extension to Log interface to get error message written independently of falcon-debug-mask List-Archive: http://lists.mysql.com/falcon/614 Message-Id: <49BD715E.8070004@sun.com> MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset=ISO-8859-1 Content-Transfer-Encoding: 7BIT Vladislav Vaintroub wrote: > Olav Sandstaa wrote: >> Hi, >> >> I have now implement this functionality. The main added functionality >> to the Log class is: >> >> 1. A new debug mask called LogFatalError: >> >> This debug mask will be on by default for the Falcon log. It will not >> be disabled if the user provides a debug mask at startup or changes >> the debug mask for a running server. >> >> 2. A new log method Log::fatal(): >> >> Log messages written using this method will always be written to >> Falcon/MySQL's log file. >> >> Note that compare to my original proposal this debug mask will only >> be on for the original Falcon logger (StorageInterface::logger), not >> for the "MySQL logger" (StorageInterface::mysqlLogger). Due to this >> the default log mask is not completely maintained inside the Log >> class but has to be set in when the Falcon logger is added to listen >> to the log (in ha_falcon.cpp). >> >> The patch is available here: >> >> http://lists.mysql.com/commits/68742 >> >> It would be great if someone could have a look at the patch and >> either give feedback or an OK to push it. >> >> Thanks, >> Olav > > Olav, I think it is ok basically, but I'd prefer to maybe have it > differently named. It could be situations where one wants to write to > the log, even if there is no fatal error, but on some very interesting > event. Maybe LogFatalError should be LogAlwaysWrite? Thanks for the suggestion, Vlad. I agree with you, there are also "non fatal" situations where Falcon should write messages to the Log:: file without depending on the falcon_debug_mask set by the user. The reason I have called it Log::fatal() and LogFatalError is that what caused me to propose this in the first place was that I had seen a few times where Falcon experienced situations where it could not continue - and exited without "telling anything about why". But I am not sure if I think you suggestion to rename LogFatalError is the only alternative. I see basically two other situations in addition to "fatal situations" where Falcon always should write something to the Log:: , serious error conditions where it is able to continue (e.g., disk full situtations?) and places where we should provide "info" (ie. during recovery or when we do the initials startup). So what do you and other think about the following suggestion (the first is the name of the "log flag" and the second is a corresponding convenience method): 1. LogFatalError and Log::fatal() 2. LogError and Log::error() 3. LogInfo and Log::info() where all three "debug masks" where by default on? (note that LogInfo is already defined and turning it on by default would increase the "verbosity" probably too much and some of the exiting LogInfo messages had to be changed to LogDebug). Vlad's suggestion would probably be implemented as: 1. LogAlwaysWrite and Log::logAlways() Opinions? Olav