2 * Copyright (c) 2002, Robert Collins..
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
9 * A copy of the GNU General Public License can be found at
12 * Written by Robert Collins <rbtcollins@hotmail.com>
16 #ifndef SETUP_LOGFILE_H
17 #define SETUP_LOGFILE_H
19 #include "LogSingleton.h"
22 // Logging class. Default logging level is PLAIN.
23 class LogFile
: public LogSingleton
{
25 static LogFile
*createLogFile();
27 void clearFiles(); // delete all target filenames
28 void setFile (int minlevel
, const std::string
& path
, bool append
);
29 std::string
getFileName (int level
) const;
31 static void setExitMsg (int msg
) { exit_msg
= msg
; }
32 static int getExitMsg () { return exit_msg
; }
34 /* Some platforms don't call destructors. So this call exists
35 * which guarantees to flush any log data...
36 * but doesn't call generic C++ destructors
38 virtual void exit (int exit_code
, bool show_end_install_msg
= true)
39 __attribute__ ((noreturn
));
40 virtual void flushAll ();
42 // get a specific verbosity stream.
43 virtual std::ostream
&operator() (enum log_level level
);
46 LogFile(std::stringbuf
*aStream
);
47 LogFile (LogFile
const &); // no copy constructor
48 LogFile
&operator = (LogFile
const&); // no assignment operator
49 virtual void endEntry(); // the current in-progress entry is complete.
52 void log_save (int babble
, const std::string
& filename
, bool append
);
55 #define Logger() ((LogFile &) LogSingleton::GetInstance ())
56 #endif /* SETUP_LOGFILE_H */