// // GTMLogger+ASL.h // // Copyright 2007-2008 Google Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); you may not // use this file except in compliance with the License. You may obtain a copy // of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the // License for the specific language governing permissions and limitations under // the License. // #import #import #import "GTMLogger.h" // GTMLogger (GTMLoggerASLAdditions) // // Adds a convenience creation method that allows you to get a standard // GTMLogger object that is configured to write to ASL (Apple System Log) using // the GTMLogASLWriter (declared below). // @interface GTMLogger (GTMLoggerASLAdditions) // Returns a new autoreleased GTMLogger instance that will log to ASL, using // the GTMLogASLFormatter, and the GTMLogLevelFilter filter. + (id)standardLoggerWithASL; @end @class GTMLoggerASLClient; // GTMLogASLWriter // // A GTMLogWriter implementation that will send log messages to ASL (Apple // System Log facility). To use with GTMLogger simply set the "writer" for a // GTMLogger to be an instance of this class. The following example sets the // shared system logger to lot to ASL. // // [[GTMLogger sharedLogger] setWriter:[GTMLogASLWriter aslWriter]]; // GTMLoggerInfo(@"Hi"); // This is sent to ASL // // See GTMLogger.h for more details and a higher-level view. // @interface GTMLogASLWriter : NSObject { @private GTM_WEAK Class aslClientClass_; NSString *facility_; } // Returns an autoreleased GTMLogASLWriter instance that uses an instance of // GTMLoggerASLClient and the default ASL facility. + (id)aslWriter; // Returns an autoreleased GTMLogASLWriter instance that uses an instance of // GTMLoggerASLClient and the supplied facility. See asl_open(3) for a // discusssion of ASL facility strings. + (id)aslWriterWithFacility:(NSString *)facility; // Designated initializer. Uses instances of the specified |clientClass| to talk // to the ASL system. All logs from this method will use |facility| as the ASL // log facility. This method is typically only useful for testing. Users // should generally NOT use this method to get an instance. Instead, simply use // the +aslWriter or +aslWriterWithFacility: methods to obtain an instance. - (id)initWithClientClass:(Class)clientClass facility:(NSString *)facility; @end // GTMLogASLWriter // An ASL-specific log formatter that replicates the same fields as // GTMLogStandardFormatter except for those (date, process name) that ASL // records independently. @interface GTMLogASLFormatter : GTMLogBasicFormatter @end // GTMLogASLFormatter // Helper class used by GTMLogASLWriter to create an ASL client and write to the // ASL log. This class is need to make management/cleanup of the aslclient work // in a multithreaded environment. You'll need one of these GTMLoggerASLClient // per thread (this is automatically handled by GTMLogASLWriter). // // This class should rarely (if EVER) be used directly. It's designed to be used // internally by GTMLogASLWriter, and by some unit tests. It should not be // used externally. @interface GTMLoggerASLClient : NSObject { @private aslclient client_; aslmsg msgOptions_; } // Designated initializer, |facility| is supplied to asl_open(). - (id)initWithFacility:(NSString *)facility; // Sends the given string to ASL at the specified ASL log |level|. - (void)log:(NSString *)msg level:(int)level; @end