/** * File Logging Example for Hectic Library * * This example demonstrates how to use the file logging capabilities * of the Hectic library, showing both programmatic configuration * and environment variable-based configuration. */ #include "../hectic.h" #include int main(int argc, char *argv[]) { // Initialize the logger logger_init(); // Log a message to stderr raise_info("Starting file logging example"); // Enable file logging programmatically const char *log_file = "example_log.txt"; if (logger_set_file(log_file) != 0) { raise_exception("Failed to open log file: %s", log_file); return 1; } // Set output mode to write to both stderr and file logger_set_output_mode(LOG_OUTPUT_BOTH); // Log messages at different levels raise_debug("This is a debug message"); raise_info("This is an info message"); raise_notice("This is a notice message"); raise_warn("This is a warning message"); raise_exception("This is an exception message"); // Switch to file-only mode logger_set_output_mode(LOG_OUTPUT_FILE_ONLY); raise_info("This message will only appear in the log file"); // Switch back to stderr-only mode logger_set_output_mode(LOG_OUTPUT_STDERR_ONLY); raise_info("This message will only appear on stderr"); // Clean up logger_free(); printf("\nLog file demonstration complete. Check %s for logged messages.\n", log_file); printf("\nYou can also run this program with environment variables:\n"); printf(" LOG_FILE=custom.log LOG_OUTPUT_MODE=BOTH LOG_LEVEL=DEBUG ./file_logging_example\n"); return 0; }