00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039 #include "LogCommand.h"
00040 #include "debug/Log.h"
00041
00042 namespace oasys {
00043
00044 LogCommand::LogCommand()
00045 : TclCommand("log")
00046 {
00047 bind_s("logfile", &Log::instance()->logfile_,
00048 "The pathname to the logfile.");
00049
00050 add_to_help("<path> <level> <string>",
00051 "Log message string with path, level");
00052 add_to_help("prefix <prefix>", "Set logging prefix");
00053 add_to_help("rotate", "Rotate the log file");
00054 add_to_help("dump_rules", "Show log filter rules");
00055 add_to_help("reparse", "Reparse the rules file");
00056 }
00057
00058 int
00059 LogCommand::exec(int argc, const char** argv, Tcl_Interp* interp)
00060 {
00061 (void)interp;
00062
00063
00064 if (argc == 3 && !strcmp(argv[1], "prefix")) {
00065 Log::instance()->set_prefix(argv[2]);
00066 logf("/log", LOG_DEBUG, "set logging prefix to '%s'", argv[2]);
00067 return TCL_OK;
00068 }
00069
00070
00071 if (argc == 2 && !strcmp(argv[1], "rotate")) {
00072 Log::instance()->rotate();
00073 return TCL_OK;
00074 }
00075
00076
00077 if (argc == 2 && !strcmp(argv[1], "dump_rules")) {
00078 StringBuffer buf;
00079 Log::instance()->dump_rules(&buf);
00080 set_result(buf.c_str());
00081 return TCL_OK;
00082 }
00083
00084
00085 if (argc == 2 &&
00086 (strcmp(argv[1], "reparse_debug_file") == 0 ||
00087 strcmp(argv[1], "reparse") == 0))
00088 {
00089 Log::instance()->parse_debug_file();
00090 return TCL_OK;
00091 }
00092
00093
00094 if (argc != 4) {
00095 wrong_num_args(argc, argv, 1, 4, 4);
00096 return TCL_ERROR;
00097 }
00098
00099 log_level_t level = str2level(argv[2]);
00100 if (level == LOG_INVALID) {
00101 resultf("invalid log level %s", argv[2]);
00102 return TCL_ERROR;
00103 }
00104
00105 logf(argv[1], level, argv[3]);
00106
00107 return TCL_OK;
00108 }
00109
00110 }