nfv/nfv/nfv-plugins/nfv_plugins/event_log_handlers/file_storage.py

98 lines
3.2 KiB
Python
Executable File

#
# Copyright (c) 2015-2016 Wind River Systems, Inc.
#
# SPDX-License-Identifier: Apache-2.0
#
import codecs
import six
import nfv_common.event_log.handlers.v1 as event_log_handlers_v1
from nfv_plugins.event_log_handlers import config
class FileStorage(event_log_handlers_v1.EventLogHandler):
"""
File Storage Event Log Handler is used to store event-log data to disk.
"""
_name = 'File-Storage'
_version = '1.0.0'
_provider = 'Wind River'
_signature = 'e33d7cf6-f270-4256-893e-16266ee4dd2e'
@property
def name(self):
return self._name
@property
def version(self):
return self._version
@property
def provider(self):
return self._provider
@property
def signature(self):
return self._signature
def _write_log_data(self, log_data):
"""
Write the fact that an event has occurred to a file
"""
# Write the file in utf-8 format to support unicode text
with codecs.open(config.CONF['File-Storage']['file'], "a", 'utf-8') as f:
line_separator_str = "%s" % ('=' * 84)
six.print_(line_separator_str, file=f)
six.print_("%-24s = %s" % ("log-id", log_data.log_id), file=f)
six.print_("%-24s = %s" % ("event-id",
log_data.event_id), file=f)
six.print_("%-24s = %s" % ("event-type",
log_data.event_type), file=f)
six.print_("%-24s = %s" % ("event-context",
log_data.event_context), file=f)
six.print_("%-24s = %s" % ("importance",
log_data.importance), file=f)
six.print_("%-24s = %s" % ("entity", log_data.entity), file=f)
six.print_("%-24s = %s" % ("reason_text",
log_data.reason_text), file=f)
six.print_("%-24s = %s" % ("additional_text",
log_data.additional_text), file=f)
if log_data.state_data is not None:
six.print_("%-24s = %s"
% ("state-data.state",
log_data.state_data.state), file=f)
if log_data.threshold_data is not None:
six.print_("%-24s = %s"
% ("threshold-data.threshold-value",
log_data.threshold_data.threshold_value), file=f)
six.print_("%40s = %s"
% ("threshold-data.observed-value",
log_data.threshold_data.observed_value), file=f)
if log_data.timestamp is not None:
six.print_("%-24s = %s" % ("timestamp",
log_data.timestamp), file=f)
six.print_(line_separator_str, file=f)
def log(self, log_data):
"""
Write the fact that a log is being generated to a file
"""
self._write_log_data(log_data)
def initialize(self, config_file):
"""
Initialize
"""
config.load(config_file)
def finalize(self):
"""
Finalize
"""
return