-
Lenard Nagy authored
Change-Id: I73e0d881185553ef7b22802901d6e728402e0b10 Signed-off-by:
Lenard Nagy <lenard.nagy@ericsson.com>
Lenard Nagy authoredChange-Id: I73e0d881185553ef7b22802901d6e728402e0b10 Signed-off-by:
Lenard Nagy <lenard.nagy@ericsson.com>
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
LegacyLogger.hh 3.53 KiB
/******************************************************************************
* Copyright (c) 2000-2017 Ericsson Telecom AB
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Balasko, Jeno
* Kovacs, Ferenc
* Raduly, Csaba
* Pandi, Krisztian
*
******************************************************************************/
#ifndef LegacyLogger_HH
#define LegacyLogger_HH
#include "Logger.hh"
#include "ILoggerPlugin.hh"
#include "Charstring.hh"
namespace TitanLoggerApi
{
class TitanLogEvent;
}
struct component_id_t;
struct logfile_data_struct;
/// This class is responsible for configuration file parameters: ConsoleMask
/// and FileMask as well.
class LegacyLogger: public ILoggerPlugin
{
public:
LegacyLogger();
virtual ~LegacyLogger();
inline boolean is_static() { return TRUE; }
inline boolean is_log2str_capable() { return TRUE; }
CHARSTRING log2str(const TitanLoggerApi::TitanLogEvent& event);
void init(const char *options = 0);
void fini();
void reset();
void fatal_error(const char *err_msg, ...);
void log(const TitanLoggerApi::TitanLogEvent& event, boolean log_buffered,
boolean separate_file, boolean use_emergency_mask);
static char * plugin_specific_settings();
protected:
explicit LegacyLogger(const LegacyLogger&);
LegacyLogger& operator=(const LegacyLogger&);
char *get_file_name(size_t idx);
void set_file_name(const char *new_filename_skeleton, boolean from_config);
boolean set_file_size(int p_size);
void set_append_file(boolean new_append_file);
boolean set_file_number(int p_number);
boolean set_disk_full_action(TTCN_Logger::disk_full_action_t p_disk_full_action);
void open_file(boolean is_first = TRUE);
void close_file();
boolean log_file(const TitanLoggerApi::TitanLogEvent& event, boolean log_buffered);
boolean log_file_emerg(const TitanLoggerApi::TitanLogEvent& event);
boolean log_console(const TitanLoggerApi::TitanLogEvent& event,
const TTCN_Logger::Severity& severity);
boolean log_to_file(const char *event_str);
void create_parent_directories(const char *path_name);
/// Checks for invalid combinations of LogFileSize, LogFileNumber and
/// DiskFullAction.
void chk_logfile_data();
protected:
FILE *log_fp_;
FILE *er_;
size_t logfile_bytes_;
size_t logfile_size_;
size_t logfile_number_;
size_t logfile_index_;
/** @brief "Format string" for the log file name.
* The following format specifiers will be interpreted:
* \li \%c -> name of the current testcase (only on PTCs)
* \li \%e -> name of executable
* \li \%h -> hostname
* \li \%l -> login name
* \li \%n -> component name (only on PTCs, optional)
* \li \%p -> process id
* \li \%r -> component reference
* \li \%s -> default suffix (currently: always "log")
* \li \%t -> component type (only on PTCs)
* \li \%i -> log file index
* \li \%\% -> \%
**/
char *filename_skeleton_;
TTCN_Logger::disk_full_action_t disk_full_action_;
struct timeval disk_full_time_;
/// True if `filename_skeleton_' was set from the configuration file.
boolean skeleton_given_;
/// True to open the log file and append to it, false to truncate.
boolean append_file_;
boolean is_disk_full_;
boolean format_c_present_;
boolean format_t_present_;
char *current_filename_;
static LegacyLogger *myself;
};
#endif // LegacyLogger_HH