Skip to content

Svc::ActiveTextLogger Component

1. Introduction

The Svc::ActiveTextLogger component processes log texts from other components. The logs are written to standard output and optionally to a file.

2. Requirements

The requirements for Svc::ActiveTextLogger are as follows:

Requirement Description Verification Method
ISF-ATL-001 The Svc::ActiveTextLogger component shall print received log texts to standard output. Unit Test; Inspection
ISF-ATL-002 The Svc::ActiveTextLogger component shall write received log texts to an optionally supplied file. Unit Test
ISF-ATL-003 The Svc::ActiveTextLogger component shall format the passed log text on the calling thread context, and perform all other processing on the component's thread. Inspection
ISF-ATL-004 The Svc::ActiveTextLogger component shall stop writing to the optional file if it would exceed its max size. Unit Test
ISF-ATL-005 The Svc::ActiveTextLogger component shall provide a public method to supply the filename to write to and max size. Unit Test
ISF-ATL-006 The Svc::ActiveTextLogger component shall attempt to create a new file to write to if the supplied one already exists. It will try up to ten times, by adding an integer suffix to the filename, ie "file","file0","file1"..."file9". After the last possible attempt is failed, the initial file shall be overwritten; ie if "file9" already exists, the "file" shall be truncated and used as a log file. Unit Test
ISF-ATL-007 The Svc::ActiveTextLogger component shall support per-severity event filtering via a public setSeverityFilter() method. Unit Test
ISF-ATL-008 The Svc::ActiveTextLogger component shall never filter FATAL events regardless of filter configuration. Unit Test

3. Design

3.1 Context

3.1.1 Component Diagram

The Svc::ActiveTextLogger component has the following component diagram:

TODO

3.1.2 Ports

The Svc::ActiveTextLogger component uses the following port types:

Port Data Type Name Direction Kind Usage
Fw::LogText TextLogger Input Synchronous Logging port

3.2 Functional Description

The Svc::ActiveTextLogger component provides a text logging function for the software that maintains consistent ordering by writing the logs from a thread.

3.2.1 Severity Filtering

The Svc::ActiveTextLogger supports per-severity event filtering via the setSeverityFilter(Fw::LogSeverity, bool) method. Each of the six filterable severity levels (WARNING_HI, WARNING_LO, COMMAND, ACTIVITY_HI, ACTIVITY_LO, DIAGNOSTIC) can be independently enabled or disabled. When a severity is disabled, events at that severity level are silently dropped before processing. FATAL events are never filtered regardless of configuration.

Default filter states are configured via constants in ActiveTextLoggerCfg.hpp. By default, all severities pass through except DIAGNOSTIC, which is filtered out (ACTIVE_TEXT_LOGGER_FILTER_DIAGNOSTIC_DEFAULT = false). This preserves backward compatibility with the prior hardcoded DIAGNOSTIC suppression behavior.

The filtering logic is provided by the shared Svc::EventSeverityFilter utility class.

3.2.2 File Writing

Once a valid file and max size is supplied via a public function call, the Svc::ActiveTextLogger component writes to that file as well as standard output. The Svc::ActiveTextLogger component will stop writing to the file if it would exceed the maximum size.

If the file supplied already exists, the Svc::ActiveTextLogger component will attempt to create a new file up to ten times by appending an integer suffix to end of the file name. After the last possible attempt is failed, the initial file is overwritten.

3.3 Scenarios

TODO

3.4 State

Svc::ActiveTextLogger has no state machines.

3.5 Algorithms

Svc::ActiveTextLogger has no significant algorithms.

4. Dictionaries

5. Module Checklists

6. Unit Testing

To see unit test coverage run fprime-util check --coverage

7. Change Log

Date Description
5/11/2017 Initial SDD