LOG_DISABLE_LOGS compile flag, wrapped f in macros

This commit is contained in:
staviq 2023-08-25 15:51:27 +02:00
parent 54e81bac6f
commit 4fdcede9ec
4 changed files with 79 additions and 24 deletions

View file

@ -302,6 +302,11 @@ k_quants.o: k_quants.c k_quants.h
$(CC) $(CFLAGS) -c $< -o $@ $(CC) $(CFLAGS) -c $< -o $@
endif # LLAMA_NO_K_QUANTS endif # LLAMA_NO_K_QUANTS
ifdef LLAMA_DISABLE_LOGS
CFLAGS += -DLOG_DISABLE_LOGS
CXXFLAGS += -DLOG_DISABLE_LOGS
endif # LLAMA_DISABLE_LOGS
# #
# Print build information # Print build information
# #

View file

@ -462,7 +462,9 @@ bool gpt_params_parse(int argc, char ** argv, gpt_params & params) {
} }
} else if (arg == "-h" || arg == "--help") { } else if (arg == "-h" || arg == "--help") {
gpt_print_usage(argc, argv, default_params); gpt_print_usage(argc, argv, default_params);
#ifndef LOG_DISABLE_LOGS
log_print_usage(); log_print_usage();
#endif // LOG_DISABLE_LOGS
exit(0); exit(0);
} else if (arg == "--random-prompt") { } else if (arg == "--random-prompt") {
params.random_prompt = true; params.random_prompt = true;
@ -502,6 +504,7 @@ bool gpt_params_parse(int argc, char ** argv, gpt_params & params) {
std::istreambuf_iterator<char>(), std::istreambuf_iterator<char>(),
std::back_inserter(params.grammar) std::back_inserter(params.grammar)
); );
#ifndef LOG_DISABLE_LOGS
// Parse args for logging parameters // Parse args for logging parameters
} else if ( log_param_single_parse( argv[i] ) ) { } else if ( log_param_single_parse( argv[i] ) ) {
// Do nothing, log_param_single_parse automatically does it's thing // Do nothing, log_param_single_parse automatically does it's thing
@ -519,6 +522,7 @@ bool gpt_params_parse(int argc, char ** argv, gpt_params & params) {
break; break;
} }
// End of Parse args for logging parameters // End of Parse args for logging parameters
#endif // LOG_DISABLE_LOGS
} else { } else {
fprintf(stderr, "error: unknown argument: %s\n", arg.c_str()); fprintf(stderr, "error: unknown argument: %s\n", arg.c_str());
gpt_print_usage(argc, argv, default_params); gpt_print_usage(argc, argv, default_params);

View file

@ -371,20 +371,29 @@ inline FILE *_log_handler2(bool change = false, LogTriState disable = LogTriStat
// Disables logs entirely at runtime. // Disables logs entirely at runtime.
// Makes LOG() and LOG_TEE() produce no output, // Makes LOG() and LOG_TEE() produce no output,
// untill enabled back. // untill enabled back.
inline FILE *log_disable() #define LOG_DISABLE() _log_disable()
// INTERNAL, DO NOT USE
inline FILE *_log_disable()
{ {
return _log_handler1(true, LogTriStateTrue); return _log_handler1(true, LogTriStateTrue);
} }
// Enables logs at runtime. // Enables logs at runtime.
inline FILE *log_enable() #define LOG_ENABLE() _log_enable()
// INTERNAL, DO NOT USE
inline FILE *_log_enable()
{ {
return _log_handler1(true, LogTriStateFalse); return _log_handler1(true, LogTriStateFalse);
} }
// Sets target fir logs, either by a file name or FILE* pointer (stdout, stderr, or any valid FILE*) // Sets target fir logs, either by a file name or FILE* pointer (stdout, stderr, or any valid FILE*)
inline FILE *log_set_target(std::string filename) { return _log_handler1(true, LogTriStateSame, filename); } #define LOG_SET_TARGET(target) _log_set_target(target)
inline FILE *log_set_target(FILE *target) { return _log_handler2(true, LogTriStateSame, target); }
// INTERNAL, DO NOT USE
inline FILE *_log_set_target(std::string filename) { return _log_handler1(true, LogTriStateSame, filename); }
inline FILE *_log_set_target(FILE *target) { return _log_handler2(true, LogTriStateSame, target); }
// INTERNAL, DO NOT USE // INTERNAL, DO NOT USE
inline FILE *log_handler() { return _log_handler1(); } inline FILE *log_handler() { return _log_handler1(); }
@ -393,32 +402,32 @@ inline void log_test()
{ {
std::cerr << "LOGDBG: LOGTEST" << std::endl; std::cerr << "LOGDBG: LOGTEST" << std::endl;
log_disable(); LOG_DISABLE();
LOG("01 Hello World to nobody, because logs are disabled!\n") LOG("01 Hello World to nobody, because logs are disabled!\n")
log_enable(); LOG_ENABLE();
LOG("02 Hello World to default output, which is \"%s\" ( Yaaay, arguments! )!\n", LOG_STRINGIZE(LOG_TARGET)) LOG("02 Hello World to default output, which is \"%s\" ( Yaaay, arguments! )!\n", LOG_STRINGIZE(LOG_TARGET))
LOG_TEE("03 Hello World to **both** default output and " LOG_TEE_TARGET_STRING "!\n") LOG_TEE("03 Hello World to **both** default output and " LOG_TEE_TARGET_STRING "!\n")
log_set_target(stderr); LOG_SET_TARGET(stderr);
LOG("04 Hello World to stderr!\n") LOG("04 Hello World to stderr!\n")
LOG_TEE("05 Hello World TEE with double printing to stderr prevented!\n") LOG_TEE("05 Hello World TEE with double printing to stderr prevented!\n")
log_set_target(LOG_DEFAULT_FILE_NAME); LOG_SET_TARGET(LOG_DEFAULT_FILE_NAME);
LOG("06 Hello World to default log file!\n") LOG("06 Hello World to default log file!\n")
log_set_target(stdout); LOG_SET_TARGET(stdout);
LOG("07 Hello World to stdout!\n") LOG("07 Hello World to stdout!\n")
log_set_target(LOG_DEFAULT_FILE_NAME); LOG_SET_TARGET(LOG_DEFAULT_FILE_NAME);
LOG("08 Hello World to default log file again!\n") LOG("08 Hello World to default log file again!\n")
log_disable(); LOG_DISABLE();
LOG("09 Hello World _1_ into the void!\n") LOG("09 Hello World _1_ into the void!\n")
log_enable(); LOG_ENABLE();
LOG("10 Hello World back from the void ( you should not see _1_ in the log or the output )!\n") LOG("10 Hello World back from the void ( you should not see _1_ in the log or the output )!\n")
log_disable(); LOG_DISABLE();
log_set_target("llama.anotherlog.log"); LOG_SET_TARGET("llama.anotherlog.log");
LOG("11 Hello World _2_ to nobody, new target was selected but logs are still disabled!\n") LOG("11 Hello World _2_ to nobody, new target was selected but logs are still disabled!\n")
log_enable(); LOG_ENABLE();
LOG("12 Hello World this time in a new file ( you should not see _2_ in the log or the output )?\n") LOG("12 Hello World this time in a new file ( you should not see _2_ in the log or the output )?\n")
log_set_target("llama.yetanotherlog.log"); LOG_SET_TARGET("llama.yetanotherlog.log");
LOG("13 Hello World this time in yet new file?\n") LOG("13 Hello World this time in yet new file?\n")
log_set_target(LOG_FILENAME_GENERATOR("llama_autonamed", "log")); LOG_SET_TARGET(LOG_FILENAME_GENERATOR("llama_autonamed", "log"));
LOG("14 Hello World in log with generated filename!\n") LOG("14 Hello World in log with generated filename!\n")
// exit(0); // exit(0);
@ -435,12 +444,12 @@ inline bool log_param_single_parse(std::string param)
} }
else if (std::string("--log-disable").compare(param) == 0) else if (std::string("--log-disable").compare(param) == 0)
{ {
log_disable(); LOG_DISABLE();
return true; return true;
} }
else if (std::string("--log-enable").compare(param) == 0) else if (std::string("--log-enable").compare(param) == 0)
{ {
log_enable(); LOG_ENABLE();
return true; return true;
} }
@ -459,7 +468,7 @@ inline bool log_param_pair_parse(bool check_but_dont_parse, std::string param, s
{ {
return true; return true;
} }
log_set_target(LOG_FILENAME_GENERATOR(next.empty() ? "unnamed" : next, "log")); LOG_SET_TARGET(LOG_FILENAME_GENERATOR(next.empty() ? "unnamed" : next, "log"));
return true; return true;
} }
@ -482,7 +491,10 @@ inline void log_print_usage()
fprintf(stdout, " Log file will be tagged with unique ID and written as \"<name>.<ID>.log\"\n"); /* */ fprintf(stdout, " Log file will be tagged with unique ID and written as \"<name>.<ID>.log\"\n"); /* */
} }
inline void log_dump_cmdline(int argc, char **argv) #define LOG_DUMP_CMDLINE( argc, argv ) _log_dump_cmdline(argc,argv)
// INTERNAL, DO NOT USE
inline void _log_dump_cmdline(int argc, char **argv)
{ {
std::string buf; std::string buf;
for (int i = 0; i < argc; ++i) for (int i = 0; i < argc; ++i)
@ -564,3 +576,34 @@ inline std::string _log_var_to_string(std::vector<int> var)
return buf.append(" ]"); \ return buf.append(" ]"); \
}() \ }() \
.c_str() .c_str()
#ifdef LOG_DISABLE_LOGS
#undef LOG
#define LOG(...) // dummy stub
#undef LOGLN
#define LOGLN(...) // dummy stub
#undef LOG_TEE
#define LOG_TEE(...) fprintf(stderr, __VA_ARGS__); // convert to normal fprintf
#undef LOG_TEELN
#define LOG_TEELN(...) fprintf(stderr, __VA_ARGS__); // convert to normal fprintf
#undef LOG_DISABLE
#define LOG_DISABLE() // dummy stub
#undef LOG_ENABLE
#define LOG_ENABLE() // dummy stub
#undef LOG_ENABLE
#define LOG_ENABLE() // dummy stub
#undef LOG_SET_TARGET
#define LOG_SET_TARGET(...) // dummy stub
#undef LOG_DUMP_CMDLINE
#define LOG_DUMP_CMDLINE(...) // dummy stub
#endif // LOG_DISABLE_LOGS

View file

@ -62,10 +62,11 @@ int main(int argc, char ** argv) {
return 1; return 1;
} }
log_set_target(LOG_FILENAME_GENERATOR("main", "log")); #ifndef LOG_DISABLE_LOGS
LOG_SET_TARGET(LOG_FILENAME_GENERATOR("main", "log"));
LOG_TEE("Log start\n") LOG_TEE("Log start\n")
LOG_DUMP_CMDLINE(argc,argv);
log_dump_cmdline(argc,argv); #endif // LOG_DISABLE_LOGS
// TODO: Dump params ? // TODO: Dump params ?
//LOG("Params perplexity: %s\n", LOG_TOSTR(params.perplexity)) //LOG("Params perplexity: %s\n", LOG_TOSTR(params.perplexity))
@ -847,7 +848,9 @@ int main(int argc, char ** argv) {
} }
llama_backend_free(); llama_backend_free();
#ifndef LOG_DISABLE_LOGS
LOG_TEE("Log end\n") LOG_TEE("Log end\n")
#endif // LOG_DISABLE_LOGS
return 0; return 0;
} }