cog/Frameworks/Sparkle/SULog.m

81 lines
2.4 KiB
Objective-C

/*
* SULog.m
* EyeTV
*
* Created by Uli Kusterer on 12/03/2009.
* Copyright 2009 Elgato Systems GmbH. All rights reserved.
*
*/
// -----------------------------------------------------------------------------
// Headers:
// -----------------------------------------------------------------------------
#include "SULog.h"
// -----------------------------------------------------------------------------
// Constants:
// -----------------------------------------------------------------------------
#define LOG_FILE_PATH @"~/Library/Logs/SparkleUpdateLog.log"
// -----------------------------------------------------------------------------
// SUClearLog:
// Erase the log at the start of an update. We don't want to litter the
// user's hard disk with logging data that's mostly unused, so each app
// should clear the log before it starts updating, so only the most recent
// update is kept around.
//
// TAKES:
// sender - Object that sent this message, typically of type X.
//
// GIVES:
// param - who owns the returned value?
// result - same here.
// -----------------------------------------------------------------------------
void SUClearLog( void )
{
FILE* logfile = fopen([[LOG_FILE_PATH stringByExpandingTildeInPath] fileSystemRepresentation],"w");
if( logfile )
fclose(logfile);
else
NSLog(@"----- Sparkle Log -----");
}
// -----------------------------------------------------------------------------
// SULog:
// Like NSLog, but logs to one specific log file. Each line is prefixed
// with the current date and time, to help in regressing issues.
//
// TAKES:
// format - NSLog/printf-style format string.
// ... - More parameters depending on format string's contents.
// -----------------------------------------------------------------------------
void SULog( NSString* format, ... )
{
va_list ap;
va_start(ap, format);
NSString* theStr = [[[NSString alloc] initWithFormat: format arguments: ap] autorelease];
FILE* logfile = fopen([[LOG_FILE_PATH stringByExpandingTildeInPath] fileSystemRepresentation],"a");
if( !logfile )
NSLog( @"%@",theStr );
else
{
theStr = [NSString stringWithFormat: @"%@: %@", [NSDate date], theStr];
NSData* theData = [theStr dataUsingEncoding: NSUTF8StringEncoding];
char newlineChar = '\n';
fwrite( [theData bytes], 1, [theData length], logfile );
fwrite( &newlineChar, 1, 1, logfile ); // Append a newline.
fclose( logfile );
logfile = NULL;
}
va_end(ap);
}