This is MiscLogFile.rtf in view mode; [Download] [Up]
Release 1.0 Copyright ©1993 by Don Yacktman. All Rights Reserved. MiscLogFile Inherits From: Object Declared In: misckit/MiscLogFile.h Protocols: NXTransport Class Description A MiscLogFile is used to log information to a UNIX text file. You simply pass it lines of text±as MiscString objects±to append to the log file. If you wish, and this is necessary if multiple processes might write to the log file, you can have the MiscLogFile make use of a MiscLockFile to provide a proper lock on the log file. You can log messages to stdout, stderr, or an arbitrary file. To use a MiscLogFile in your application, simply create the object using ±alloc and ±init and then set up the file to be used for logging. This may be done by using any one of the following methods: ±setFileName:, ±usestdout, or ±usestderr. To add a line to the log file, send the ±addLineToLogFile: message, which takes a MiscString (or other object which responds to ±stringValue) as an argument and returns a YES if successful. The ±addLineToLogFile: method automatically handles opening and closing the file for you, each time that you call it. As such, it can be somewhat slow and resource intensive. Alternatively, if you plan to write many lines to the log file at a time, then open the log file with an ±openFile message, write your lines with the ±appendToLogFile:andFlush: method, and then, when you are finished, send the ±closeFile message. Note that all three messages return a NO if they are unsuccessful in any way. If, when appending lines, you do not flush them right away, repeated lines will be compressed into a single line saying ªThe last line was repeated x times.º The disadvantage to this is that during the whole time, you are holding the log file locked. If multiple processes need to log problems, then this is probably a bad idea, since they will either have to give up on logging or spin wait. (A way to get around this is to spin off a separate thread to do the logging for the main thread.) Instance Variables BOOL fileOpen; BOOL special; FILE *file; id lastLine; id lockFile; id fileName; int repeats; file File we are writing to; only valid if fileOpen == YES. fileName The name of the file being logged to. fileOpen YES if the log file is currently opened for appending. lastLine The line most recently output by the MiscLogFile object lockFile A supporting MiscLockFile (if the log file is protected by a lock) repeats How many times the last line has been sent to the file. special YES if the MiscLogFile is logging to stderr or stdout. Method Types Initializing a MiscLogFile ± init ± copy ± free Changing parameters ± setFileName: ± setLockFile: ± usestderr ± usestdout Getting information about ± fileName ± file ± fileIsOpen ± special ± lockFile Saving to a file ± read: ± write: Updating the log file ± addLineToLogFile: ± appendToLogFile:andFlush: ± openFile ± closeFile Instance Methods addLineToLogFile: - (BOOL)addLineToLogFile:aString Opens the log file, obtaining a lock if necessary, and appends aString to the file. The argument aString should be an object which responds to the ±stringValue method. After appending the message, this method then closes the file and returns a YES if successful. A failure is noted by returning a NO. See also: -appendToLogFile:andFlush: appendToLogFile:andFlush: - (BOOL)appendToLogFile:aString andFlush:(BOOL)flushFlag Appends aString to the log file. Before calling this method, you must first open the log file. This method returns a YES upon success and a NO if it fails. This method attempts to coalesce identical lines into the message ªLast line repeated x times.º in order to save space on disk. See also: -addLineToLogFile, -closeFile, -openFile closeFile - (BOOL)closeFile Flush and close the log file if open. If the log file is not open or the flush or close are unsuccessful, a NO is returned. If all is well, a YES is returned. See also: -openFile copy - copy Returns a new instance of MiscLogFile which has been initialized to use the same files for logging and locking as the receiver. The copy does not hold any locks or open files which are held by the original object; this is because the file should only be accessible from one place at a time. See also: -openFile, ±read: file - (FILE *)file Returns the UNIX file which is used for logging. The return value is valid only if the ±fileIsOpen message returns a YES. Except for unusual circumstances, you should never need to use this method. See also: -openFile, ±read: fileName - fileName Returns a MiscString containing the filename of the file the MiscLogFile is logging to. See also: -openFile fileIsOpen - (BOOL)fileIsOpen Returns YES if the log file is open and the MiscLogFile holds any locks associated with the log file. Returns NO if this is not the case. See also: -openFile, ±closeFile free - free Frees the MiscLogFile and it's associated objects (lock file and filename). init - init Initializes a new instance of MiscLogFile. It is up to you to finish initialization by providing the MiscLogFile with a path to the log file, and, if desired, a MiscLockFile object. lockFile - lockFile Returns the instance of MiscLockFile which is used to lock the log file. Returns nil if no lock file is being used. See also: -setLockFile: openFile - (BOOL)openFile Opens the log file for appending. If a lock file has been set up, the MiscLogFile will attempt to obtain a lock on the file before actually opening it. If successful,m this method returns YES; it returns NO upon failure. See also: -closeFile, ±setFileName: read: - read:(NXTypedStream *)stream Restores a MiscLogFile from a stream. An archived MiscLogFile never holds a lock on a logfile and does not hold the file open, thus the new object will be like a newly initialized MiscLogFile object. See also: -copy, ±write: setFileName: - setFileName:aString Sets the name of the file used for logging. Unless you wish the file to be relative to the application's current working directory, you should specify a full path name for the file. setLockFile: - setLockFile:newLockFile Uses the newLockFile as the locking mechanism on the log file. It is up to the programmer to provide a properly initialized MiscLockFile object (or subclass) for newLockFile. See also: -copy special - (BOOL)special Returns a YES if logging to either stdout or stderr. Returns a NO if logging to a UNIX text file. See also: -usestderr, ±usestdout, -setFileName: usestderr - usestderr Sets up the MiscLogFile to log to stderr instead of a UNIX file. See also: ±usestdout, -setFileName: usestdout - usestdout Sets up the MiscLogFile to log to stdout instead of a UNIX file. See also: ±usestderr, -setFileName: write: - write:(NXTypedStream *)stream Archives the MiscLogFile to a stream. An archived MiscLogFile never holds a lock on a logfile and does not hold the file open. See also: ±read:
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.