|
Packit |
db01ca |
/*
|
|
Packit |
db01ca |
*
|
|
Packit |
db01ca |
* Copyright (c) 2003,2004 by FORCE Computers.
|
|
Packit |
db01ca |
*
|
|
Packit |
db01ca |
* This program is distributed in the hope that it will be useful,
|
|
Packit |
db01ca |
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit |
db01ca |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. This
|
|
Packit |
db01ca |
* file and program are licensed under a BSD style license. See
|
|
Packit |
db01ca |
* the Copying file included with the OpenHPI distribution for
|
|
Packit |
db01ca |
* full licensing terms.
|
|
Packit |
db01ca |
*
|
|
Packit |
db01ca |
* Authors:
|
|
Packit |
db01ca |
* Thomas Kanngieser <thomas.kanngieser@fci.com>
|
|
Packit |
db01ca |
*/
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
#ifndef dIpmiLog_h
|
|
Packit |
db01ca |
#define dIpmiLog_h
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
#ifndef dThread_h
|
|
Packit |
db01ca |
#include "thread.h"
|
|
Packit |
db01ca |
#endif
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
#include <stdio.h>
|
|
Packit |
db01ca |
#include <assert.h>
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
#define dDefaultLogfile "log"
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
/* log file properties */
|
|
Packit |
db01ca |
#define dIpmiLogPropNone 0
|
|
Packit |
db01ca |
#define dIpmiLogStdOut 1 // use stdout
|
|
Packit |
db01ca |
#define dIpmiLogStdErr 2 // use stderr
|
|
Packit |
db01ca |
#define dIpmiLogLogFile 4 // use a log file
|
|
Packit |
db01ca |
#define dIpmiLogFile 8 // use a file
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
class cIpmiLog
|
|
Packit |
db01ca |
{
|
|
Packit |
db01ca |
protected:
|
|
Packit |
db01ca |
cThreadLock m_lock;
|
|
Packit |
db01ca |
int m_lock_count;
|
|
Packit |
db01ca |
int m_open_count;
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
bool m_hex; // true => print int in hex
|
|
Packit |
db01ca |
bool m_time; // with time
|
|
Packit |
db01ca |
bool m_recursive;
|
|
Packit |
db01ca |
bool m_std_out;
|
|
Packit |
db01ca |
bool m_std_err;
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
bool m_nl;
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
FILE *m_fd;
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
void Start();
|
|
Packit |
db01ca |
void Output( const char *str );
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
public:
|
|
Packit |
db01ca |
cIpmiLog();
|
|
Packit |
db01ca |
virtual ~cIpmiLog();
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
bool Open( int properties, const char *filename = "", int max_log_files = 1 );
|
|
Packit |
db01ca |
void Close();
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
void Lock()
|
|
Packit |
db01ca |
{
|
|
Packit |
db01ca |
m_lock.Lock();
|
|
Packit |
db01ca |
m_lock_count++;
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
void Unlock()
|
|
Packit |
db01ca |
{
|
|
Packit |
db01ca |
m_lock_count--;
|
|
Packit |
db01ca |
assert( m_lock_count >= 0 );
|
|
Packit |
db01ca |
m_lock.Unlock();
|
|
Packit |
db01ca |
}
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
void Hex( bool hex = true ) { m_hex = hex; }
|
|
Packit |
db01ca |
bool IsHex() { return m_hex; }
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
void Time( bool t = true ) { m_time = t; }
|
|
Packit |
db01ca |
bool WithTime() { return m_time; }
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
void Recursive( bool r ) { m_recursive = true; }
|
|
Packit |
db01ca |
bool IsRecursive() { return m_recursive; }
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
cIpmiLog &operator<<( bool b );
|
|
Packit |
db01ca |
cIpmiLog &operator<<( unsigned char c );
|
|
Packit |
db01ca |
cIpmiLog &operator<<( int i );
|
|
Packit |
db01ca |
cIpmiLog &operator<<( unsigned int i );
|
|
Packit |
db01ca |
cIpmiLog &operator<<( double d );
|
|
Packit |
db01ca |
cIpmiLog &operator<<( const char *str );
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
void Log( const char *fmt, ... );
|
|
Packit |
db01ca |
void Hex( const unsigned char *data, int size );
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
void Begin( const char *section, const char *name );
|
|
Packit |
db01ca |
void End();
|
|
Packit |
db01ca |
cIpmiLog &Entry( const char *entry );
|
|
Packit |
db01ca |
};
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
extern cIpmiLog stdlog;
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
|
|
Packit |
db01ca |
#endif
|