stumpless 2.2.0
Loading...
Searching...
No Matches
stream_example.c

Demonstrates how to work with a stream target.

Demonstrates how to work with a stream target.

// SPDX-License-Identifier: Apache-2.0
/*
* Copyright 2018-2019 Joel E. Anderson
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include <stdlib.h>
#include <stdio.h>
#include <stumpless.h>
int
main( int argc, char **argv ) {
FILE *logfile;
struct stumpless_target *stream_target;
struct stumpless_entry *basic_entry;
struct stumpless_element *element;
struct stumpless_element *element_result;
struct stumpless_param *param;
struct stumpless_entry *result;
int log_result;
// building the entry is done as usual
basic_entry = stumpless_new_entry( STUMPLESS_FACILITY_USER,
STUMPLESS_SEVERITY_INFO,
"stumpless-unit-test",
"basic-entry",
"basic test message" );
if( !basic_entry ) {
stumpless_perror( "could not create a basic entry" );
return EXIT_FAILURE;
}
element = stumpless_new_element( "basic-element" );
result = stumpless_add_element( basic_entry, element );
if( !result ) {
stumpless_perror( "could not create and add an element to the entry" );
return EXIT_FAILURE;
}
param = stumpless_new_param( "basic-param-name", "basic-param-value" );
element_result = stumpless_add_param( element, param );
if( !element_result ) {
stumpless_perror( "could not create and add a param to he element" );
return EXIT_FAILURE;
}
// if you want to log to a file, then the log file must be opened first
logfile = tmpfile();
if( !logfile ) {
stumpless_perror( "could not open a log file" );
return EXIT_FAILURE;
}
// opening the stream target with an open stream is straightforward:
stream_target = stumpless_open_stream_target( "stream-example", logfile );
// logging an entry is just like with any target
log_result = stumpless_add_entry( stream_target, basic_entry );
if( log_result < 0 ) {
stumpless_perror( "could not log an entry" );
return EXIT_FAILURE;
}
// closing the target is done as usual
// after closing the target, you need to close the stream
fclose( logfile );
// destroying all remaining resources
return EXIT_SUCCESS;
}
STUMPLESS_PUBLIC_FUNCTION struct stumpless_element * stumpless_add_param(struct stumpless_element *element, struct stumpless_param *param)
Adds a param to an element.
STUMPLESS_PUBLIC_FUNCTION struct stumpless_element * stumpless_new_element(const char *name)
Creates a new element with the given name.
STUMPLESS_PUBLIC_FUNCTION struct stumpless_entry * stumpless_add_element(struct stumpless_entry *entry, struct stumpless_element *element)
Adds an element to an entry.
STUMPLESS_PUBLIC_FUNCTION void stumpless_destroy_entry_and_contents(const struct stumpless_entry *entry)
Destroys an entry as well as all elements and params that it contains, freeing any allocated memory.
STUMPLESS_PUBLIC_FUNCTION struct stumpless_entry * stumpless_new_entry(enum stumpless_facility facility, enum stumpless_severity severity, const char *app_name, const char *msgid, const char *message,...)
Creates a new entry with the given characteristics.
STUMPLESS_PUBLIC_FUNCTION void stumpless_perror(const char *prefix)
Prints information about the current error to the error stream.
STUMPLESS_PUBLIC_FUNCTION void stumpless_free_all(void)
Closes the default target if it has been opened, frees all memory allocated internally,...
STUMPLESS_PUBLIC_FUNCTION struct stumpless_param * stumpless_new_param(const char *name, const char *value)
Creates a new param with the given name and value.
STUMPLESS_PUBLIC_FUNCTION struct stumpless_target * stumpless_open_stream_target(const char *name, FILE *stream)
Opens a stream target for the given stream.
STUMPLESS_PUBLIC_FUNCTION void stumpless_close_stream_target(const struct stumpless_target *target)
Closes a stream target.
An element of structured data.
Definition element.h:93
A log entry.
Definition entry.h:60
A parameter within a structured data element.
Definition param.h:93
A target that log entries can be sent to.
Definition target.h:140
The main header file for the stumpless logging library.
STUMPLESS_PUBLIC_FUNCTION int stumpless_add_entry(struct stumpless_target *target, const struct stumpless_entry *entry)
Adds an entry into a given target.