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

Demonstrates how to work with a socket target.

Demonstrates how to work with a socket target.

// SPDX-License-Identifier: Apache-2.0
/*
* Copyright 2019-2024 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 <stddef.h>
#include <stdlib.h>
#include <stumpless.h>
int
main( int argc, char **argv ) {
const char *socket_name = "/dev/log";
struct stumpless_entry *entry;
struct stumpless_element *element;
struct stumpless_entry *entry_result;
struct stumpless_param *param;
struct stumpless_element *element_result;
struct stumpless_target *socket_target;
struct stumpless_target *manual_target;
int log_result;
// building the entry is done as usual
entry = stumpless_new_entry( STUMPLESS_FACILITY_USER,
STUMPLESS_SEVERITY_INFO,
"example-app-name",
"example-msgid",
"This is an example message." );
if( !entry ) {
stumpless_perror( "could not create a basic entry" );
return EXIT_FAILURE;
}
element = stumpless_new_element( "basic-element" );
entry_result = stumpless_add_element( entry, element );
if( !entry_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 the element" );
return EXIT_FAILURE;
}
// opening the target is straightforward
socket_target = stumpless_open_socket_target( socket_name,
// making this argument NULL
// means that a randomized local
// socket will be created
NULL );
if( !socket_target ) {
stumpless_perror( "couldn't create a new socket target" );
return EXIT_FAILURE;
}
// if you want to specify the local socket used to connect to the target
// socket, then you can specify it in the local_socket parameter
manual_target = stumpless_open_socket_target( socket_name, "logfromthis" );
if( !manual_target ) {
stumpless_perror( "couldn't create a new socket target with a manual local"
" socket" );
return EXIT_FAILURE;
}
// sending the entry is just like normal
log_result = stumpless_add_entry( socket_target, entry );
if( log_result < 0 ) {
stumpless_perror( "could not log an entry to a simple target, maybe"
" /dev/log doesn't exist" );
}
log_result = stumpless_add_entry( manual_target, entry );
if( log_result < 0 ) {
stumpless_perror( "could not log an entry to a manual local socket, maybe"
" /dev/log doesn't exist" );
}
// closing the targets is done as usual
// destroying all the other resources before finishing up:
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_socket_target(const char *name, const char *local_socket)
Opens a socket target.
STUMPLESS_PUBLIC_FUNCTION void stumpless_close_socket_target(const struct stumpless_target *target)
Closes a socket 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.