/*
 * File:   logger.h
 * Author: blackpanther
 *
 * Created on October 31, 2010, 3:51 PM
 */

#ifndef LOGGER_H
#define	LOGGER_H

#include <stdio.h>

#include "configuration.h"

/**
 * Several Log Level, use to filter which messages should be displayed
 */
typedef enum _LogLevel{
    ALL              =   0,
    DEBUG3           = 100,
    DEBUG2           = 200,
    DEBUG1           = 300,
    INFO             = 400,
    NORMAL           = 500,
    NONE             = 600,
    WARNING          = 700,
    SEVERE           = 800
} LogLevel;

typedef struct _logger Logger;

/**
 * Log given message, with a title and with a priority
 * @param level
 * 		priority level
 * @param header
 * 		message title
 * @param message
 * 		message body
 */
void logMessage(LogLevel level,char* header,char* message);

/**
 * return the current logger level
 */
LogLevel getLoggerLevel();
/**
 * set the current logger level
 */
void     setLoggerLevel(LogLevel);

/**
 * Transform from 'LogLevel' to 'char*'
 */
char*    printLogLevel(LogLevel);

/**
 * Activate logger
 */
void  activateLogger();
/**
 * Disactivate logger
 */
void  desactivateLogger();

/**
 * DECORATE current logger to a date logger
 */
void  makeDateLogger();

/**
 * Kill logger daemon if there is one
 */
void killLoggerProcess();

#endif	/* LOGGER_H */

