1 |
corvo |
1.1 |
|
2 |
|
|
"""
|
3 |
|
|
* ApMon - Application Monitoring Tool
|
4 |
|
|
* Version: 2.0.4
|
5 |
|
|
*
|
6 |
|
|
* Copyright (C) 2005 California Institute of Technology
|
7 |
|
|
*
|
8 |
|
|
* Permission is hereby granted, free of charge, to use, copy and modify
|
9 |
|
|
* this software and its documentation (the "Software") for any
|
10 |
|
|
* purpose, provided that existing copyright notices are retained in
|
11 |
|
|
* all copies and that this notice is included verbatim in any distributions
|
12 |
|
|
* or substantial portions of the Software.
|
13 |
|
|
* This software is a part of the MonALISA framework (http://monalisa.cacr.caltech.edu).
|
14 |
|
|
* Users of the Software are asked to feed back problems, benefits,
|
15 |
|
|
* and/or suggestions about the software to the MonALISA Development Team
|
16 |
|
|
* (developers@monalisa.cern.ch). Support for this software - fixing of bugs,
|
17 |
|
|
* incorporation of new features - is done on a best effort basis. All bug
|
18 |
|
|
* fixes and enhancements will be made available under the same terms and
|
19 |
|
|
* conditions as the original software,
|
20 |
|
|
|
21 |
|
|
* IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY FOR
|
22 |
|
|
* DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT
|
23 |
|
|
* OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY DERIVATIVES THEREOF,
|
24 |
|
|
* EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
25 |
|
|
|
26 |
|
|
* THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES,
|
27 |
|
|
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY,
|
28 |
|
|
* FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. THIS SOFTWARE IS
|
29 |
|
|
* PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE NO
|
30 |
|
|
* OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR
|
31 |
|
|
* MODIFICATIONS.
|
32 |
|
|
"""
|
33 |
|
|
|
34 |
|
|
import time
|
35 |
|
|
import threading
|
36 |
|
|
|
37 |
|
|
FATAL = 0 # When something very bad happened and we should quit
|
38 |
|
|
ERROR = 1 # Tipically when something important fails
|
39 |
|
|
WARNING = 2 # Intermediate logging level.
|
40 |
|
|
INFO = 3 # Intermediate logging level.
|
41 |
|
|
NOTICE = 4 # Logging level with detailed information.
|
42 |
|
|
DEBUG = 5 # Logging level for debugging
|
43 |
|
|
|
44 |
|
|
LEVELS = ['FATAL', 'ERROR', 'WARNING', 'INFO', 'NOTICE', 'DEBUG']
|
45 |
|
|
|
46 |
|
|
# Simple logging class
|
47 |
|
|
class Logger:
|
48 |
|
|
# Constructor
|
49 |
|
|
def __init__ (this, defaultLevel = INFO):
|
50 |
|
|
this.log_lock = threading.Lock();
|
51 |
|
|
this.logLevel = defaultLevel
|
52 |
|
|
|
53 |
|
|
# Print the given message if the level is more serious as the existing one
|
54 |
|
|
def log(this, level, message):
|
55 |
|
|
global LEVELS, FATAL, ERROR, WARNING, INFO, NOTICE, DEBUG
|
56 |
|
|
this.log_lock.acquire();
|
57 |
|
|
if(level <= this.logLevel):
|
58 |
|
|
print time.asctime() + ": ApMon["+LEVELS[level]+"]: "+message;
|
59 |
|
|
this.log_lock.release();
|
60 |
|
|
|
61 |
|
|
# Set the logging level
|
62 |
|
|
def setLogLevel(this, strLevel):
|
63 |
|
|
this.log_lock.acquire();
|
64 |
|
|
for l_idx in range(len(LEVELS)):
|
65 |
|
|
if strLevel == LEVELS[l_idx]:
|
66 |
|
|
this.logLevel = l_idx;
|
67 |
|
|
this.log_lock.release();
|
68 |
|
|
|