[errors] try to improve some errors

This commit is contained in:
Timothy Stack 2022-06-22 22:53:52 -07:00
parent a3b9314ff7
commit 906494ebfa
144 changed files with 625 additions and 567 deletions

View File

@ -533,11 +533,11 @@ operator|(nonstd::optional<T> in,
template<typename T, typename F>
auto
operator|(const T& in, const lnav::itertools::details::mapper<F>& mapper)
-> std::vector<
decltype(mapper.m_func(std::declval<typename T::value_type>()))>
-> std::vector<std::remove_const_t<std::remove_reference_t<
decltype(mapper.m_func(std::declval<typename T::value_type>()))>>>
{
using return_type = std::vector<decltype(mapper.m_func(
std::declval<typename T::value_type>()))>;
using return_type = std::vector<std::remove_const_t<std::remove_reference_t<
decltype(mapper.m_func(std::declval<typename T::value_type>()))>>>;
return_type retval;
retval.reserve(in.size());
@ -569,11 +569,34 @@ template<typename T, typename F>
auto
operator|(const std::vector<T>& in,
const lnav::itertools::details::mapper<F>& mapper)
-> std::vector<typename std::remove_const_t<decltype((*(*in.begin())
.*mapper.m_func)())>>
-> std::vector<typename std::remove_const_t<std::remove_reference_t<
decltype((*(std::declval<T>()).*mapper.m_func)())>>>
{
using return_type = std::vector<typename std::remove_const_t<decltype((
*(*in.begin()).*mapper.m_func)())>>;
using return_type
= std::vector<typename std::remove_const_t<std::remove_reference_t<
decltype((*(std::declval<T>()).*mapper.m_func)())>>>;
return_type retval;
retval.reserve(in.size());
std::transform(
in.begin(),
in.end(),
std::back_inserter(retval),
[&mapper](const auto& elem) { return ((*elem).*mapper.m_func)(); });
return retval;
}
template<typename T, typename F>
auto
operator|(const std::set<T>& in,
const lnav::itertools::details::mapper<F>& mapper)
-> std::vector<typename std::remove_const_t<std::remove_reference_t<
decltype((*(std::declval<T>()).*mapper.m_func)())>>>
{
using return_type
= std::vector<typename std::remove_const_t<std::remove_reference_t<
decltype((*(std::declval<T>()).*mapper.m_func)())>>>;
return_type retval;
retval.reserve(in.size());

View File

@ -422,8 +422,11 @@ filter_sub_source::rl_change(readline_curses* rc)
const char* errptr;
int eoff;
if ((code = pcre_compile(
new_value.c_str(), PCRE_CASELESS, &errptr, &eoff, nullptr))
if ((code = pcre_compile(new_value.c_str(),
PCRE_CASELESS | PCRE_UTF8,
&errptr,
&eoff,
nullptr))
== nullptr)
{
lnav_data.ld_filter_help_status_source.fss_error.set_value(
@ -508,7 +511,7 @@ filter_sub_source::rl_perform(readline_curses* rc)
int eoff;
if ((code = pcre_compile(new_value.c_str(),
PCRE_CASELESS,
PCRE_CASELESS | PCRE_UTF8,
&errptr,
&eoff,
nullptr))

View File

@ -346,8 +346,7 @@ handle_paging_key(int ch)
execute_command(
ec,
"zoom-to "
+ std::string(
lnav_zoom_strings[lnav_data.ld_zoom_level - 1]));
+ lnav_zoom_strings[lnav_data.ld_zoom_level - 1]);
}
break;
@ -358,8 +357,7 @@ handle_paging_key(int ch)
execute_command(
ec,
"zoom-to "
+ std::string(
lnav_zoom_strings[lnav_data.ld_zoom_level + 1]));
+ lnav_zoom_strings[lnav_data.ld_zoom_level + 1]);
}
break;

View File

@ -554,13 +554,13 @@
.. _goto:
:goto *line#|N%|date*
^^^^^^^^^^^^^^^^^^^^^
:goto *line#|N%|timestamp*
^^^^^^^^^^^^^^^^^^^^^^^^^^
Go to the given location in the top view
**Parameters**
* **line#|N%|date\*** --- A line number, percent into the file, or a timestamp
* **line#|N%|timestamp\*** --- A line number, percent into the file, or a timestamp
**Examples**
To go to line 22:

View File

@ -184,7 +184,7 @@ const int ZOOM_LEVELS[] = {
const ssize_t ZOOM_COUNT = sizeof(ZOOM_LEVELS) / sizeof(int);
const char* lnav_zoom_strings[] = {
const std::vector<std::string> lnav_zoom_strings = {
"1-second",
"30-second",
"1-minute",
@ -195,11 +195,9 @@ const char* lnav_zoom_strings[] = {
"8-hour",
"1-day",
"1-week",
nullptr,
};
static std::vector<std::string> DEFAULT_DB_KEY_NAMES = {
static const std::vector<std::string> DEFAULT_DB_KEY_NAMES = {
"match_index",
"capture_index",
"capture_count",

View File

@ -87,7 +87,7 @@ typedef enum {
LNF_SECURE_MODE = (1L << LNB_SECURE_MODE),
} lnav_flags_t;
extern const char* lnav_zoom_strings[];
extern const std::vector<std::string> lnav_zoom_strings;
/** The status bars. */
typedef enum {

View File

@ -47,6 +47,7 @@
#include "base/humanize.network.hh"
#include "base/injector.hh"
#include "base/isc.hh"
#include "base/itertools.hh"
#include "base/paths.hh"
#include "base/string_util.hh"
#include "bound_tags.hh"
@ -66,6 +67,7 @@
#include "papertrail_proc.hh"
#include "readline_callbacks.hh"
#include "readline_curses.hh"
#include "readline_highlighters.hh"
#include "readline_possibilities.hh"
#include "relative_time.hh"
#include "service_tags.hh"
@ -79,6 +81,8 @@
#include "yajlpp/json_op.hh"
#include "yajlpp/yajlpp.hh"
using namespace lnav::roles::literals;
static std::string
remaining_args(const std::string& cmdline,
const std::vector<std::string>& args,
@ -102,6 +106,29 @@ remaining_args(const std::string& cmdline,
return cmdline.substr(index_in_cmdline);
}
static string_fragment
remaining_args_frag(const std::string& cmdline,
const std::vector<std::string>& args,
size_t index = 1)
{
size_t start_pos = 0;
require(index > 0);
if (index >= args.size()) {
return string_fragment{};
}
for (size_t lpc = 0; lpc < index; lpc++) {
start_pos += args[lpc].length();
}
size_t index_in_cmdline = cmdline.find(args[index], start_pos);
require(index_in_cmdline != std::string::npos);
return string_fragment{cmdline.c_str(), static_cast<int>(index_in_cmdline)};
}
static nonstd::optional<std::string>
find_arg(std::vector<std::string>& args, const std::string& flag)
{
@ -581,8 +608,16 @@ com_mark_expr(exec_context& ec,
#endif
if (retcode != SQLITE_OK) {
const char* errmsg = sqlite3_errmsg(lnav_data.ld_db);
auto expr_al = attr_line_t(expr).with_attr_for_all(
VC_ROLE.value(role_t::VCR_QUOTED_CODE));
readline_sqlite_highlighter(expr_al, -1);
auto um
= lnav::console::user_message::error(
attr_line_t("invalid mark expression: ").append(expr_al))
.with_reason(errmsg)
.with_snippets(ec.ec_source);
return ec.make_error("{}", errmsg);
return Err(um);
}
auto& lss = lnav_data.ld_log_source;
@ -662,8 +697,18 @@ com_goto_mark(exec_context& ec,
for (size_t lpc = 1; lpc < args.size(); lpc++) {
auto bt_opt = bookmark_type_t::find_type(args[lpc]);
if (!bt_opt) {
return ec.make_error("unknown bookmark type: {}",
args[lpc]);
auto um
= lnav::console::user_message::error(
attr_line_t("unknown bookmark type: ")
.append(args[lpc]))
.with_snippets(ec.ec_source)
.with_help(
attr_line_t("available types: ")
.join(bookmark_type_t::get_all_types()
| lnav::itertools::map(
&bookmark_type_t::get_name),
", "));
return Err(um);
}
mark_types.insert(bt_opt.value());
}
@ -689,7 +734,12 @@ com_goto_mark(exec_context& ec,
}
if (!new_top) {
return ec.make_error("no more bookmarks after here");
return ec.make_error(
"no more {} bookmarks after here",
fmt::join(mark_types
| lnav::itertools::map(
&bookmark_type_t::get_name),
", "));
}
} else {
for (const auto& bt : mark_types) {
@ -1568,17 +1618,27 @@ com_highlight(exec_context& ec,
auto_mem<pcre> code;
int eoff;
args[1] = remaining_args(cmdline, args);
auto re_frag = remaining_args_frag(cmdline, args);
args[1] = re_frag.to_string();
if (hm.find({highlight_source_t::INTERACTIVE, args[1]}) != hm.end()) {
return ec.make_error("highlight already exists -- {}", args[1]);
} else if ((code = pcre_compile(args[1].c_str(),
PCRE_CASELESS,
PCRE_CASELESS | PCRE_UTF8,
&errptr,
&eoff,
nullptr))
== nullptr)
{
return ec.make_error("{}", errptr);
auto um = lnav::console::user_message::error(
"invalid regular expression")
.with_reason(errptr)
.with_snippets(ec.ec_source);
um.um_snippets.back()
.s_content.append("\n")
.append(re_frag.sf_begin + eoff, ' ')
.append("^ "_comment)
.append(lnav::roles::comment(errptr));
return Err(um);
} else {
highlighter hl(code.release());
attr_t hl_attrs = view_colors::singleton().attrs_for_ident(args[1]);
@ -1693,7 +1753,8 @@ com_filter(exec_context& ec,
auto_mem<pcre> code;
int eoff;
args[1] = remaining_args(cmdline, args);
auto re_frag = remaining_args_frag(cmdline, args);
args[1] = re_frag.to_string();
if (fs.get_filter(args[1]) != NULL) {
return com_enable_filter(ec, cmdline, args);
} else if (fs.full()) {
@ -1701,13 +1762,22 @@ com_filter(exec_context& ec,
"filter limit reached, try combining "
"filters with a pipe symbol (e.g. foo|bar)");
} else if ((code = pcre_compile(args[1].c_str(),
PCRE_CASELESS,
PCRE_CASELESS | PCRE_UTF8,
&errptr,
&eoff,
nullptr))
== NULL)
{
return ec.make_error("{}", errptr);
auto um = lnav::console::user_message::error(
"invalid regular expression")
.with_reason(errptr)
.with_snippets(ec.ec_source);
um.um_snippets.back()
.s_content.append("\n")
.append(re_frag.sf_begin + eoff, ' ')
.append("^ "_comment)
.append(lnav::roles::comment(errptr));
return Err(um);
} else if (ec.ec_dry_run) {
if (args[0] == "filter-in" && !fs.empty()) {
lnav_data.ld_preview_status_source.get_description().set_value(
@ -1900,8 +1970,16 @@ com_filter_expr(exec_context& ec,
#endif
if (retcode != SQLITE_OK) {
const char* errmsg = sqlite3_errmsg(lnav_data.ld_db);
auto expr_al = attr_line_t(expr).with_attr_for_all(
VC_ROLE.value(role_t::VCR_QUOTED_CODE));
readline_sqlite_highlighter(expr_al, -1);
auto um = lnav::console::user_message::error(
attr_line_t("invalid filter expression: ")
.append(expr_al))
.with_reason(errmsg)
.with_snippets(ec.ec_source);
return ec.make_error("{}", errmsg);
return Err(um);
}
if (ec.ec_dry_run) {
@ -2105,10 +2183,12 @@ com_create_search_table(exec_context& ec,
if (args.empty()) {
} else if (args.size() >= 2) {
string_fragment regex_frag;
std::string regex;
if (args.size() >= 3) {
regex = remaining_args(cmdline, args, 2);
regex_frag = remaining_args_frag(cmdline, args, 2);
regex = regex_frag.to_string();
} else {
regex = lnav_data.ld_views[LNV_LOG].get_current_search();
}
@ -2117,7 +2197,19 @@ com_create_search_table(exec_context& ec,
= pcrepp::from_str(regex, log_search_table::pattern_options());
if (re_res.isErr()) {
return ec.make_error("{}", re_res.unwrapErr().ce_msg);
auto re_err = re_res.unwrapErr();
auto um = lnav::console::user_message::error(
"invalid regular expression")
.with_reason(re_err.ce_msg)
.with_snippets(ec.ec_source);
if (args.size() >= 3) {
um.um_snippets.back()
.s_content.append("\n")
.append(regex_frag.sf_begin + re_err.ce_offset, ' ')
.append("^ "_comment)
.append(lnav::roles::comment(re_err.ce_msg));
}
return Err(um);
}
auto re = re_res.unwrap();
@ -2305,8 +2397,7 @@ com_open(exec_context& ec, std::string cmdline, std::vector<std::string>& args)
std::vector<std::pair<std::string, int>> files_to_front;
std::vector<std::string> closed_files;
for (size_t lpc = 0; lpc < split_args.size(); lpc++) {
std::string fn = split_args[lpc];
for (auto fn : split_args) {
int top = 0;
if (startswith(fn, "pt:")) {
@ -2332,14 +2423,14 @@ com_open(exec_context& ec, std::string cmdline, std::vector<std::string>& args)
auto lf = *file_iter;
if (lf->get_filename() == fn) {
if (lf->get_format() != NULL) {
if (lf->get_format() != nullptr) {
retval = "info: log file already loaded";
break;
} else {
files_to_front.emplace_back(fn, top);
retval = "";
break;
}
files_to_front.emplace_back(fn, top);
retval = "";
break;
}
}
if (file_iter == lnav_data.ld_active_files.fc_files.end()) {
@ -2371,8 +2462,15 @@ com_open(exec_context& ec, std::string cmdline, std::vector<std::string>& args)
fc.fc_file_names.emplace(fn, logfile_open_options());
retval = "info: watching -- " + fn;
} else {
return ec.make_error(
"cannot stat file: {} -- {}", fn, strerror(errno));
auto um = lnav::console::user_message::error(
attr_line_t("cannot open file: ")
.append(lnav::roles::file(fn)))
.with_errno_reason()
.with_snippets(ec.ec_source)
.with_help(
"make sure the file exists and is "
"accessible");
return Err(um);
}
} else if (is_dev_null(st)) {
return ec.make_error("cannot open /dev/null");
@ -2380,8 +2478,12 @@ com_open(exec_context& ec, std::string cmdline, std::vector<std::string>& args)
auto_fd fifo_fd;
if ((fifo_fd = open(fn.c_str(), O_RDONLY)) == -1) {
return ec.make_error(
"cannot open FIFO: {} -- {}", fn, strerror(errno));
auto um = lnav::console::user_message::error(
attr_line_t("cannot open FIFO: ")
.append(lnav::roles::file(fn)))
.with_errno_reason()
.with_snippets(ec.ec_source);
return Err(um);
} else if (ec.ec_dry_run) {
retval = "";
} else {
@ -2406,7 +2508,15 @@ com_open(exec_context& ec, std::string cmdline, std::vector<std::string>& args)
lnav_data.ld_pipers.push_back(fifo_piper);
}
} else if ((abspath = realpath(fn.c_str(), nullptr)) == nullptr) {
return ec.make_error("cannot find file -- {}", fn);
auto um = lnav::console::user_message::error(
attr_line_t("cannot open file: ")
.append(lnav::roles::file(fn)))
.with_errno_reason()
.with_snippets(ec.ec_source)
.with_help(
"make sure the file exists and is "
"accessible");
return Err(um);
} else if (S_ISDIR(st.st_mode)) {
std::string dir_wild(abspath.in());
@ -2417,11 +2527,25 @@ com_open(exec_context& ec, std::string cmdline, std::vector<std::string>& args)
logfile_open_options());
retval = "info: watching -- " + dir_wild;
} else if (!S_ISREG(st.st_mode)) {
return ec.make_error("not a regular file or directory -- {}",
fn);
auto um = lnav::console::user_message::error(
attr_line_t("cannot open file: ")
.append(lnav::roles::file(fn)))
.with_reason("not a regular file or directory")
.with_snippets(ec.ec_source)
.with_help(
"only regular files, directories, and FIFOs "
"can be opened");
return Err(um);
} else if (access(fn.c_str(), R_OK) == -1) {
return ec.make_error(
"cannot read file {} -- {}", fn, strerror(errno));
auto um = lnav::console::user_message::error(
attr_line_t("cannot read file: ")
.append(lnav::roles::file(fn)))
.with_errno_reason()
.with_snippets(ec.ec_source)
.with_help(
"make sure the file exists and is "
"accessible");
return Err(um);
} else {
fn = abspath.in();
fc.fc_file_names.emplace(fn, logfile_open_options());
@ -3491,8 +3615,9 @@ com_zoom_to(exec_context& ec,
} else if (args.size() > 1) {
bool found = false;
for (int lpc = 0; lnav_zoom_strings[lpc] && !found; lpc++) {
if (strcasecmp(args[1].c_str(), lnav_zoom_strings[lpc]) == 0) {
for (int lpc = 0; lpc < lnav_zoom_strings.size() && !found; lpc++) {
if (strcasecmp(args[1].c_str(), lnav_zoom_strings[lpc].c_str())
== 0) {
spectrogram_source& ss = lnav_data.ld_spectro_source;
struct timeval old_time;
@ -3539,7 +3664,13 @@ com_zoom_to(exec_context& ec,
}
if (!found) {
return ec.make_error("invalid zoom level -- {}", args[1]);
auto um = lnav::console::user_message::error(
attr_line_t("invalid zoom level: ")
.append(lnav::roles::symbol(args[1])))
.with_snippets(ec.ec_source)
.with_help(attr_line_t("available levels: ")
.join(lnav_zoom_strings, ", "));
return Err(um);
}
}
@ -3626,7 +3757,7 @@ com_toggle_field(exec_context& ec,
} else if (args.size() < 2) {
return ec.make_error("Expecting a log message field name");
} else {
textview_curses* tc = *lnav_data.ld_view_stack.top();
auto* tc = *lnav_data.ld_view_stack.top();
if (tc != &lnav_data.ld_views[LNV_LOG]) {
retval = "error: hiding fields only works in the log view";
@ -3718,15 +3849,16 @@ com_hide_line(exec_context& ec,
sql_strftime(max_time_str, sizeof(max_time_str), max_time);
}
if (have_min_time && have_max_time) {
retval = "info: hiding lines before "
+ std::string(min_time_str) + " and after "
+ std::string(max_time_str);
retval
= fmt::format("info: hiding lines before {} and after {}",
min_time_str,
max_time_str);
} else if (have_min_time) {
retval
= "info: hiding lines before " + std::string(min_time_str);
= fmt::format("info: hiding lines before {}", min_time_str);
} else if (have_max_time) {
retval
= "info: hiding lines after " + std::string(max_time_str);
= fmt::format("info: hiding lines after {}", max_time_str);
} else {
retval
= "info: no lines hidden by time, pass an absolute or "
@ -4987,7 +5119,7 @@ readline_context::command_t STD_COMMANDS[] = {
help_text(":goto")
.with_summary("Go to the given location in the top view")
.with_parameter(
help_text("line#|N%|date",
help_text("line#|N%|timestamp",
"A line number, percent into the file, or a timestamp"))
.with_examples(
{{"To go to line 22", "22"},

View File

@ -2265,7 +2265,7 @@ external_log_format::build(std::vector<lnav::console::user_message>& errors)
if (hd.hd_pattern != nullptr) {
pcre* code = pcre_compile(hd.hd_pattern->get_pattern().c_str(),
PCRE_CASELESS,
PCRE_CASELESS | PCRE_UTF8,
&errptr,
&eoff,
nullptr);

View File

@ -178,6 +178,7 @@ log_vtab_impl::get_foreign_keys(std::vector<std::string>& keys_inout) const
keys_inout.emplace_back("min(log_line)");
keys_inout.emplace_back("log_mark");
keys_inout.emplace_back("log_time_msecs");
keys_inout.emplace_back("log_top_line()");
}
void

View File

@ -48,7 +48,7 @@
const bookmark_type_t logfile_sub_source::BM_ERRORS("error");
const bookmark_type_t logfile_sub_source::BM_WARNINGS("warning");
const bookmark_type_t logfile_sub_source::BM_FILES("");
const bookmark_type_t logfile_sub_source::BM_FILES("file");
static int
pretty_sql_callback(exec_context& ec, sqlite3_stmt* stmt)

View File

@ -40,7 +40,8 @@ xpcre_compile(const char* pattern, int options = 0)
pcre* retval;
int eoff;
if ((retval = pcre_compile(pattern, options, &errptr, &eoff, nullptr))
if ((retval
= pcre_compile(pattern, options | PCRE_UTF8, &errptr, &eoff, nullptr))
== nullptr)
{
fprintf(stderr, "internal error: failed to compile -- %s\n", pattern);

View File

@ -179,7 +179,7 @@ textview_curses::reload_config(error_reporter& reporter)
int eoff;
if ((code = pcre_compile(hl_pair.second.hc_regex.c_str(),
0,
PCRE_CASELESS | PCRE_UTF8,
&errptr,
&eoff,
nullptr))
@ -570,8 +570,11 @@ textview_curses::execute_search(const std::string& regex_orig)
log_debug("start search for: '%s'", regex.c_str());
if (regex.empty()) {
} else if ((code = pcre_compile(
regex.c_str(), PCRE_CASELESS, &errptr, &eoff, nullptr))
} else if ((code = pcre_compile(regex.c_str(),
PCRE_CASELESS | PCRE_UTF8,
&errptr,
&eoff,
nullptr))
== nullptr)
{
auto errmsg = std::string(errptr);
@ -579,8 +582,11 @@ textview_curses::execute_search(const std::string& regex_orig)
regex = pcrepp::quote(regex);
log_info("invalid search regex, using quoted: %s", regex.c_str());
if ((code = pcre_compile(
regex.c_str(), PCRE_CASELESS, &errptr, &eoff, nullptr))
if ((code = pcre_compile(regex.c_str(),
PCRE_CASELESS | PCRE_UTF8,
&errptr,
&eoff,
nullptr))
== nullptr)
{
log_error("Unable to compile quoted regex: %s", regex.c_str());

View File

@ -109,7 +109,8 @@ struct from_sqlite<std::pair<std::string, auto_mem<pcre>>> {
throw sqlite_func_error("Expecting a non-empty pattern value");
}
code = pcre_compile(pattern, PCRE_CASELESS, &errptr, &eoff, nullptr);
code = pcre_compile(
pattern, PCRE_CASELESS | PCRE_UTF8, &errptr, &eoff, nullptr);
if (code == nullptr) {
throw sqlite_func_error(

View File

@ -362,6 +362,128 @@ EXPECTED_FILES = \
$(srcdir)/%reldir%/test_shlexer.sh_e0599f0b53d1bd27af767113853f8e84291f137d.out \
$(srcdir)/%reldir%/test_shlexer.sh_e8fa2239ab17e7563d0c524f5400a79d6ff8bfda.err \
$(srcdir)/%reldir%/test_shlexer.sh_e8fa2239ab17e7563d0c524f5400a79d6ff8bfda.out \
$(srcdir)/%reldir%/test_sql.sh_02def66745b063518473df862987747909f56ccc.err \
$(srcdir)/%reldir%/test_sql.sh_02def66745b063518473df862987747909f56ccc.out \
$(srcdir)/%reldir%/test_sql.sh_0d46ee142f80f262c8c14a22751571cc567df525.err \
$(srcdir)/%reldir%/test_sql.sh_0d46ee142f80f262c8c14a22751571cc567df525.out \
$(srcdir)/%reldir%/test_sql.sh_13429aed81d7edfd47b57e9cdb8a25c43aff35c4.err \
$(srcdir)/%reldir%/test_sql.sh_13429aed81d7edfd47b57e9cdb8a25c43aff35c4.out \
$(srcdir)/%reldir%/test_sql.sh_1cbb81cfe40ee16332c5c775a74d06b945aa65c2.err \
$(srcdir)/%reldir%/test_sql.sh_1cbb81cfe40ee16332c5c775a74d06b945aa65c2.out \
$(srcdir)/%reldir%/test_sql.sh_1fb2a7366f0f271643e0ee30d76e03b643ff7dce.err \
$(srcdir)/%reldir%/test_sql.sh_1fb2a7366f0f271643e0ee30d76e03b643ff7dce.out \
$(srcdir)/%reldir%/test_sql.sh_2532083f215ed44630621f18df3dd7b77c06ae10.err \
$(srcdir)/%reldir%/test_sql.sh_2532083f215ed44630621f18df3dd7b77c06ae10.out \
$(srcdir)/%reldir%/test_sql.sh_26c0d94d7837792144f2d0f866fb3c12a0bd410d.err \
$(srcdir)/%reldir%/test_sql.sh_26c0d94d7837792144f2d0f866fb3c12a0bd410d.out \
$(srcdir)/%reldir%/test_sql.sh_28e23f4e98b1acd6478e39844fd9306b444550c3.err \
$(srcdir)/%reldir%/test_sql.sh_28e23f4e98b1acd6478e39844fd9306b444550c3.out \
$(srcdir)/%reldir%/test_sql.sh_2959f0c70fca61a07c6c772f193e73022f7794f1.err \
$(srcdir)/%reldir%/test_sql.sh_2959f0c70fca61a07c6c772f193e73022f7794f1.out \
$(srcdir)/%reldir%/test_sql.sh_2a16a6fd0ff235a7877e1ea93b22d873a3609402.err \
$(srcdir)/%reldir%/test_sql.sh_2a16a6fd0ff235a7877e1ea93b22d873a3609402.out \
$(srcdir)/%reldir%/test_sql.sh_2cc8a92c6eb73741080b187a2670d309b8171c90.err \
$(srcdir)/%reldir%/test_sql.sh_2cc8a92c6eb73741080b187a2670d309b8171c90.out \
$(srcdir)/%reldir%/test_sql.sh_2f15b8a38673ac4db45dc6ed2eafe609c332575b.err \
$(srcdir)/%reldir%/test_sql.sh_2f15b8a38673ac4db45dc6ed2eafe609c332575b.out \
$(srcdir)/%reldir%/test_sql.sh_31df37f254255115611fc321b63374a2fa4a1cd5.err \
$(srcdir)/%reldir%/test_sql.sh_31df37f254255115611fc321b63374a2fa4a1cd5.out \
$(srcdir)/%reldir%/test_sql.sh_3d77a2092192caf98e141a6039e886ede836f044.err \
$(srcdir)/%reldir%/test_sql.sh_3d77a2092192caf98e141a6039e886ede836f044.out \
$(srcdir)/%reldir%/test_sql.sh_3f6b92e7948d40b9d2df06112f30ce899bb0d7f5.err \
$(srcdir)/%reldir%/test_sql.sh_3f6b92e7948d40b9d2df06112f30ce899bb0d7f5.out \
$(srcdir)/%reldir%/test_sql.sh_4090f96ea11a344c1e2939211da778992dab47d8.err \
$(srcdir)/%reldir%/test_sql.sh_4090f96ea11a344c1e2939211da778992dab47d8.out \
$(srcdir)/%reldir%/test_sql.sh_4629b626c65a85d7a5595571e195b67afca272ba.err \
$(srcdir)/%reldir%/test_sql.sh_4629b626c65a85d7a5595571e195b67afca272ba.out \
$(srcdir)/%reldir%/test_sql.sh_485a6ac7c69bd4b5d34d3399a9c17f6a2dc89ad3.err \
$(srcdir)/%reldir%/test_sql.sh_485a6ac7c69bd4b5d34d3399a9c17f6a2dc89ad3.out \
$(srcdir)/%reldir%/test_sql.sh_50c0b2c93b646b848a017764bde8a4282c556e2d.err \
$(srcdir)/%reldir%/test_sql.sh_50c0b2c93b646b848a017764bde8a4282c556e2d.out \
$(srcdir)/%reldir%/test_sql.sh_528e48a03cdfa7cfbe263a6e22a65606247a8a95.err \
$(srcdir)/%reldir%/test_sql.sh_528e48a03cdfa7cfbe263a6e22a65606247a8a95.out \
$(srcdir)/%reldir%/test_sql.sh_56047c9470e515bc3e3709354c01e5d50462cde7.err \
$(srcdir)/%reldir%/test_sql.sh_56047c9470e515bc3e3709354c01e5d50462cde7.out \
$(srcdir)/%reldir%/test_sql.sh_57427f3c4b4ec785ffff7c5802c10db0d3e547cf.err \
$(srcdir)/%reldir%/test_sql.sh_57427f3c4b4ec785ffff7c5802c10db0d3e547cf.out \
$(srcdir)/%reldir%/test_sql.sh_57edc93426e6767aa44ab2356c55327553dcdc8d.err \
$(srcdir)/%reldir%/test_sql.sh_57edc93426e6767aa44ab2356c55327553dcdc8d.out \
$(srcdir)/%reldir%/test_sql.sh_5801770f3e0ecc1d62c7a97116d6da1981bbc7bd.err \
$(srcdir)/%reldir%/test_sql.sh_5801770f3e0ecc1d62c7a97116d6da1981bbc7bd.out \
$(srcdir)/%reldir%/test_sql.sh_62eb85c9569e71a630d72065238559528a16114c.err \
$(srcdir)/%reldir%/test_sql.sh_62eb85c9569e71a630d72065238559528a16114c.out \
$(srcdir)/%reldir%/test_sql.sh_662b5f9b17aa69a8e3aa9a18acb30d9acf6e2837.err \
$(srcdir)/%reldir%/test_sql.sh_662b5f9b17aa69a8e3aa9a18acb30d9acf6e2837.out \
$(srcdir)/%reldir%/test_sql.sh_6ad9d0adf85c36363f6b24f49950dcdc13dd34ab.err \
$(srcdir)/%reldir%/test_sql.sh_6ad9d0adf85c36363f6b24f49950dcdc13dd34ab.out \
$(srcdir)/%reldir%/test_sql.sh_6edb0c8d5323d1b962d90dd6ecdd7eee9008d7b5.err \
$(srcdir)/%reldir%/test_sql.sh_6edb0c8d5323d1b962d90dd6ecdd7eee9008d7b5.out \
$(srcdir)/%reldir%/test_sql.sh_6ffd89498b9a7758ded6717148fc2ce77a12621b.err \
$(srcdir)/%reldir%/test_sql.sh_6ffd89498b9a7758ded6717148fc2ce77a12621b.out \
$(srcdir)/%reldir%/test_sql.sh_753c343a256d1286750314957d1b4e155464e03e.err \
$(srcdir)/%reldir%/test_sql.sh_753c343a256d1286750314957d1b4e155464e03e.out \
$(srcdir)/%reldir%/test_sql.sh_764ea85863d4f0ea3b7cb40850ac7c8fde682d57.err \
$(srcdir)/%reldir%/test_sql.sh_764ea85863d4f0ea3b7cb40850ac7c8fde682d57.out \
$(srcdir)/%reldir%/test_sql.sh_7f664c9cda0ae1c48333e21051b5e0eeafd5b4bc.err \
$(srcdir)/%reldir%/test_sql.sh_7f664c9cda0ae1c48333e21051b5e0eeafd5b4bc.out \
$(srcdir)/%reldir%/test_sql.sh_81ffd4ed3f62228494a966512791202cea7e3b57.err \
$(srcdir)/%reldir%/test_sql.sh_81ffd4ed3f62228494a966512791202cea7e3b57.out \
$(srcdir)/%reldir%/test_sql.sh_85fe3b9803254ea54b864d4865d7bd4d7a7f86c6.err \
$(srcdir)/%reldir%/test_sql.sh_85fe3b9803254ea54b864d4865d7bd4d7a7f86c6.out \
$(srcdir)/%reldir%/test_sql.sh_87f53d441e22c1d27c27eaa6003c83da1207c063.err \
$(srcdir)/%reldir%/test_sql.sh_87f53d441e22c1d27c27eaa6003c83da1207c063.out \
$(srcdir)/%reldir%/test_sql.sh_8ee288f1508eaab0367e465e9f382e848f3282aa.err \
$(srcdir)/%reldir%/test_sql.sh_8ee288f1508eaab0367e465e9f382e848f3282aa.out \
$(srcdir)/%reldir%/test_sql.sh_977cdf5d396522194d6b9e945169ff8073b4296b.err \
$(srcdir)/%reldir%/test_sql.sh_977cdf5d396522194d6b9e945169ff8073b4296b.out \
$(srcdir)/%reldir%/test_sql.sh_9a209f3ee1b1f543ca2587b695d2eb0e63e74c51.err \
$(srcdir)/%reldir%/test_sql.sh_9a209f3ee1b1f543ca2587b695d2eb0e63e74c51.out \
$(srcdir)/%reldir%/test_sql.sh_9a5be90921256e90428c77753eca5ea0d31bd910.err \
$(srcdir)/%reldir%/test_sql.sh_9a5be90921256e90428c77753eca5ea0d31bd910.out \
$(srcdir)/%reldir%/test_sql.sh_9ceccab07fbf7130bffe3c201c710719e4a3e9af.err \
$(srcdir)/%reldir%/test_sql.sh_9ceccab07fbf7130bffe3c201c710719e4a3e9af.out \
$(srcdir)/%reldir%/test_sql.sh_9e1d05b821822ee40e13fadb24ec558f4bfcff10.err \
$(srcdir)/%reldir%/test_sql.sh_9e1d05b821822ee40e13fadb24ec558f4bfcff10.out \
$(srcdir)/%reldir%/test_sql.sh_a6b68b9f0044d18e7fa8f9287ddc9110701edc33.err \
$(srcdir)/%reldir%/test_sql.sh_a6b68b9f0044d18e7fa8f9287ddc9110701edc33.out \
$(srcdir)/%reldir%/test_sql.sh_ac1f6e9a88608ef8939f9c2f7061a25a86742d46.err \
$(srcdir)/%reldir%/test_sql.sh_ac1f6e9a88608ef8939f9c2f7061a25a86742d46.out \
$(srcdir)/%reldir%/test_sql.sh_ade121f29bedea0d1a54452cc994b2302ad9dabb.err \
$(srcdir)/%reldir%/test_sql.sh_ade121f29bedea0d1a54452cc994b2302ad9dabb.out \
$(srcdir)/%reldir%/test_sql.sh_ae7b1f1684e14bf9c16e0d789257b6ef57cfb2b1.err \
$(srcdir)/%reldir%/test_sql.sh_ae7b1f1684e14bf9c16e0d789257b6ef57cfb2b1.out \
$(srcdir)/%reldir%/test_sql.sh_afe9cdc4898df5c4e112c13dfe3db6dc089c0d7c.err \
$(srcdir)/%reldir%/test_sql.sh_afe9cdc4898df5c4e112c13dfe3db6dc089c0d7c.out \
$(srcdir)/%reldir%/test_sql.sh_b085d26043f9661d70f82cb90ecb3c5245d25eac.err \
$(srcdir)/%reldir%/test_sql.sh_b085d26043f9661d70f82cb90ecb3c5245d25eac.out \
$(srcdir)/%reldir%/test_sql.sh_b2694e4fbecdd128798af25ee0d069e7e35fb499.err \
$(srcdir)/%reldir%/test_sql.sh_b2694e4fbecdd128798af25ee0d069e7e35fb499.out \
$(srcdir)/%reldir%/test_sql.sh_b5aa0561a65de7e8e22085db184c72a94b1a89a9.err \
$(srcdir)/%reldir%/test_sql.sh_b5aa0561a65de7e8e22085db184c72a94b1a89a9.out \
$(srcdir)/%reldir%/test_sql.sh_c20b0320096342c180146a5d18a6de82319d70b2.err \
$(srcdir)/%reldir%/test_sql.sh_c20b0320096342c180146a5d18a6de82319d70b2.out \
$(srcdir)/%reldir%/test_sql.sh_c353ef036c505b75996252138fbd4c8d22e8149c.err \
$(srcdir)/%reldir%/test_sql.sh_c353ef036c505b75996252138fbd4c8d22e8149c.out \
$(srcdir)/%reldir%/test_sql.sh_c73dec2706fc0b9a124f5da3a83f40d8d3255beb.err \
$(srcdir)/%reldir%/test_sql.sh_c73dec2706fc0b9a124f5da3a83f40d8d3255beb.out \
$(srcdir)/%reldir%/test_sql.sh_c7e1dbf4605914720b55787785abfafdf2c4178a.err \
$(srcdir)/%reldir%/test_sql.sh_c7e1dbf4605914720b55787785abfafdf2c4178a.out \
$(srcdir)/%reldir%/test_sql.sh_c851bdf3ba2f56fac5a216457b2d11a109e77f03.err \
$(srcdir)/%reldir%/test_sql.sh_c851bdf3ba2f56fac5a216457b2d11a109e77f03.out \
$(srcdir)/%reldir%/test_sql.sh_cc77a633a66d1778705a34e3657737547b3fb08d.err \
$(srcdir)/%reldir%/test_sql.sh_cc77a633a66d1778705a34e3657737547b3fb08d.out \
$(srcdir)/%reldir%/test_sql.sh_d99d884ba6668b66e3ca9ea4ed2d0e236497c35d.err \
$(srcdir)/%reldir%/test_sql.sh_d99d884ba6668b66e3ca9ea4ed2d0e236497c35d.out \
$(srcdir)/%reldir%/test_sql.sh_e036fabdc6c15f65a374b95c9922212670d494ee.err \
$(srcdir)/%reldir%/test_sql.sh_e036fabdc6c15f65a374b95c9922212670d494ee.out \
$(srcdir)/%reldir%/test_sql.sh_e70dc7d2b686c7f91c2b41b10f3920c50f3ea405.err \
$(srcdir)/%reldir%/test_sql.sh_e70dc7d2b686c7f91c2b41b10f3920c50f3ea405.out \
$(srcdir)/%reldir%/test_sql.sh_ec4623bd63ff353f50db44da1231e46a1a4f1824.err \
$(srcdir)/%reldir%/test_sql.sh_ec4623bd63ff353f50db44da1231e46a1a4f1824.out \
$(srcdir)/%reldir%/test_sql.sh_f7476c76ea51cf479a6a79b037e0cb59871b629c.err \
$(srcdir)/%reldir%/test_sql.sh_f7476c76ea51cf479a6a79b037e0cb59871b629c.out \
$(srcdir)/%reldir%/test_sql.sh_f8340cb4c62aabd839ea09235b6ebe41b2bb48f4.err \
$(srcdir)/%reldir%/test_sql.sh_f8340cb4c62aabd839ea09235b6ebe41b2bb48f4.out \
$(srcdir)/%reldir%/test_sql_anno.sh_028d5d5af2f3519b59d349d41cb7ecf385253b51.err \
$(srcdir)/%reldir%/test_sql_anno.sh_028d5d5af2f3519b59d349d41cb7ecf385253b51.out \
$(srcdir)/%reldir%/test_sql_anno.sh_0a37c43350ddd7a2d0d75695be32fac083ad04a4.err \

View File

@ -1,6 +1,4 @@
✘ error: unrecognized token: "#"
✘ error: invalid filter expression: :sc_bytes # ff
reason: unrecognized token: "#"
 --> command-option:1
 | :filter-expr :sc_bytes # ff 
 = help: :filter-expr expr
══════════════════════════════════════════════════════════════════════
Set the filter expression

View File

@ -1,8 +1,5 @@
✘ error: cannot stat file: /non-existent -- No such file or directory
✘ error: cannot open file: /non-existent
reason: No such file or directory
 --> command-option:2
 | :open /non-existent 
 = help: :open path1 [... pathN]
══════════════════════════════════════════════════════════════════════
Open the given file(s) in lnav. Opening files on machines
accessible via SSH can be done using the syntax:
[user@]host:/path/to/logs
 = help: make sure the file exists and is accessible

View File

@ -1,6 +1,4 @@
✘ error: unknown bookmark type: foobar
 --> command-option:2
 | :next-mark foobar 
 = help: :next-mark type1 [... typeN]
══════════════════════════════════════════════════════════════════════
Move to the next bookmark of the given type in the current view
 = help: available types: error, warning, file, user, user-expr, search, meta

View File

@ -1,6 +1,4 @@
✘ error: invalid zoom level -- bad
✘ error: invalid zoom level: bad
 --> command-option:1
 | :zoom-to bad 
 = help: :zoom-to zoom-level
══════════════════════════════════════════════════════════════════════
Zoom the histogram view to the given level
 = help: available levels: 1-second, 30-second, 1-minute, 5-minute, 15-minute, 1-hour, 4-hour, 8-hour, 1-day, 1-week

View File

@ -1005,12 +1005,12 @@ lnav@googlegroups.com[1] support@lnav.org[2]
:goto line#|N%|date
:goto line#|N%|timestamp
══════════════════════════════════════════════════════════════════════
Go to the given location in the top view
Parameter
line#|N%|date A line number, percent into the
file, or a timestamp
line#|N%|timestamp A line number, percent
into the file, or a timestamp
See Also
:next-location, :next-mark, :prev-location, :prev-mark, :relative-goto
Examples

View File

@ -2,6 +2,6 @@
reason: expecting line number/percentage, timestamp, or relative time
 --> command-option:1
 | :goto invalid 
 = help: :goto line#|N%|date
 = help: :goto line#|N%|timestamp
══════════════════════════════════════════════════════════════════════
Go to the given location in the top view

View File

@ -1,6 +1,4 @@
✘ error: near "lik": syntax error
✘ error: invalid mark expression: :log_procname lik
reason: near "lik": syntax error
 --> command-option:1
 | :mark-expr :log_procname lik 
 = help: :mark-expr expr
══════════════════════════════════════════════════════════════════════
Set the bookmark expression

View File

@ -0,0 +1,3 @@
✘ error: no such table: nonexistent_table
 --> command-option:1
 | ;select * from nonexistent_table 

View File

@ -0,0 +1,3 @@
✘ error: the stop parameter is required
 --> command-option:1
 | ;SELECT * FROM generate_series(1) 

View File

@ -0,0 +1,2 @@
log_line log_part  log_time log_idle_msecs log_level log_mark log_comment log_tags log_filters  c_ip cs_bytes cs_method cs_uri_query  cs_uri_stem cs_username cs_vars cs_version s_app s_core s_pid s_req s_runtime s_switches s_worker_reqs sc_bytes sc_header_bytes sc_headers sc_status 
 0  <NULL> 2016-03-13 22:49:12.000  0 info   0  <NULL>  <NULL>  <NULL> 127.0.0.1  696 POST   <NULL> /update_metrics     38 HTTP/1.1  0   3  88185  1  0.129  1  1  47  378  9    200 

View File

@ -0,0 +1,3 @@
id first_name last_name age 
 0 Phil  Myman   30 
 1 Lem  Hewitt   35

View File

@ -0,0 +1,2 @@
log_msg_instance  col_0 
 1 eth0.IPv4 

View File

@ -0,0 +1,5 @@
✘ error: invalid regular expression
reason: missing )
 --> command-option:1
 | :create-search-table search_test1 bad( 
 |  ^ missing )

View File

@ -0,0 +1,6 @@
✘ error: no 'log_time' column found or not in ascending order, unable to create spectrogram
 --> command-option:2
 | :spectrogram sc_bytes 
 = help: :spectrogram field-name
══════════════════════════════════════════════════════════════════════
Visualize the given message field using a spectrogram

View File

@ -0,0 +1,3 @@
✘ error: Only the top view in the stack can be deleted
 --> command-option:2
 | ;DELETE FROM lnav_view_stack WHERE name = 'log'

View File

@ -0,0 +1,3 @@
✘ error: not authorized
 --> command-option:1
 | ;attach database '/tmp/memdb' as 'db' 

View File

@ -0,0 +1,3 @@
✘ error: oops!
 --> command-option:1
 | ;SELECT raise_error('oops!') 

View File

@ -0,0 +1,3 @@
✘ error: not authorized
 --> command-option:1
 | ;attach database 'simple-db.db' as 'db' 

View File

@ -0,0 +1,3 @@
id first_name last_name age 
 0 Phil  Myman   30 
 1 Lem  Hewitt   35

View File

@ -0,0 +1,2 @@
 replicate('foobar', 120) 
foobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobar⋯oobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobar

View File

@ -0,0 +1,3 @@
✘ error: not authorized
 --> command-option:1
 | ;attach database ':memdb:' as 'db' 

View File

@ -0,0 +1,3 @@
log_line log_msg_instance  col_0 
 0  0 eth0.IPv4 
7 1 eth0.IPv4

View File

@ -0,0 +1,6 @@
✘ error: unknown column -- sc_byes
 --> command-option:2
 | :spectrogram sc_byes 
 = help: :spectrogram field-name
══════════════════════════════════════════════════════════════════════
Visualize the given message field using a spectrogram

View File

@ -0,0 +1,3 @@
✘ error: A non-empty name and value must be provided when inserting an environment variable
 --> command-option:1
 | ;INSERT INTO environ (name) VALUES (null)

View File

@ -0,0 +1 @@
2014-10-08 16:56:38,344:WARN:foo bar baz

View File

@ -0,0 +1,3 @@
✘ error: An environment variable with the name 'SQL_ENV_VALUE' already exists
 --> command-option:1
 | ;INSERT INTO environ (name, value) VALUES ("SQL_ENV_VALUE", "bar")

View File

@ -0,0 +1,3 @@
✘ error: Environment variable names cannot contain an equals sign (=)
 --> command-option:1
 | ;INSERT INTO environ (name, value) VALUES ("foo=bar", "bar")

View File

@ -0,0 +1,2 @@
log_top_line() 
<NULL>

View File

@ -0,0 +1,6 @@
✘ error: column is not numeric -- c_ip
 --> command-option:2
 | :spectrogram c_ip 
 = help: :spectrogram field-name
══════════════════════════════════════════════════════════════════════
Visualize the given message field using a spectrogram

View File

@ -0,0 +1,6 @@
✘ error: no data was redirected to lnav's standard-input
 --> command-option:1
 | |rename-stdin foo 
 --> ../test/.lnav/formats/default/rename-stdin.lnav:7
 | ;SELECT raise_error('no data was redirected to lnav''s standard-input') 
 |  WHERE (SELECT count(1) FROM lnav_file WHERE filepath='stdin') = 0

View File

@ -0,0 +1,3 @@
✘ error: A non-empty name and value must be provided when inserting an environment variable
 --> command-option:1
 | ;INSERT INTO environ (name, value) VALUES (null, null)

View File

@ -0,0 +1,2 @@
filepath 
foo

View File

@ -0,0 +1 @@
10.112.81.15 - - [15/Feb/2013:06:00:31 +0000] "-" 400 0 "-" "-"

View File

@ -0,0 +1,6 @@
✘ error: unable to read script file: nonexistent-file -- No such file or directory
 --> command-option:1
 | ;.read nonexistent-file 
 = help: ;.read path
══════════════════════════════════════════════════════════════════════
Execute the SQLite statements in the given file

View File

@ -0,0 +1,6 @@
✘ error: unknown search table -- search_test1
 --> command-option:1
 | :delete-search-table search_test1 
 = help: :delete-search-table table-name
══════════════════════════════════════════════════════════════════════
Create an SQL table based on a regex search

View File

@ -0,0 +1,2 @@
search 
warn

View File

@ -0,0 +1,2 @@
log_top_datetime() 
<NULL>

View File

@ -0,0 +1,3 @@
✘ error: Expecting a non-empty pattern value
 --> command-option:1
 | ;INSERT INTO lnav_view_filters VALUES ('log', 0, 1, 'out', 'regex', '')

View File

@ -0,0 +1,5 @@
✘ error: expecting the new name for stdin as the first argument
 --> command-option:1
 | |rename-stdin 
 --> ../test/.lnav/formats/default/rename-stdin.lnav:6
 | ;SELECT raise_error('expecting the new name for stdin as the first argument') WHERE $1 IS NULL

View File

@ -0,0 +1,2 @@
192.168.202.254 - - [20/Jul/2009:22:59:29 +0000] "GET /vmw/vSphere/default/vmkboot.gz HTTP/1.0" 404 46210 "-" "gPXE/0.9.7"
192.168.202.254 - - [20/Jul/2009:22:59:29 +0000] "GET /vmw/vSphere/default/vmkernel.gz HTTP/1.0" 200 78929 "-" "gPXE/0.9.7"

View File

@ -0,0 +1,4 @@
192.168.202.254 - - [20/Jul/2009:23:00:26 +0000] "GET /vmw/cgi/tramp HTTP/1.0" 200 134 "-" "gPXE/0.9.7"
192.168.202.254 - - [20/Jul/2009:23:00:29 +0000] "GET /vmw/vSphere/default/vmkboot.gz HTTP/1.0" 404 46210 "-" "gPXE/0.9.7"
192.168.202.254 - - [20/Jul/2009:23:00:29 +0000] "GET /vmw/vSphere/default/vmkernel.gz HTTP/1.0" 200 78929 "-" "gPXE/0.9.7"
10.112.81.15 - - [15/Feb/2013:06:01:31 +0000] "-" 400 0 "-" "-"

View File

@ -0,0 +1,3 @@
✘ error: Expecting an lnav view name for column number 0
 --> command-option:1
 | ;INSERT INTO lnav_view_filters VALUES ('bad', 0, 1, 'out', 'regex', 'abc')

View File

@ -0,0 +1,4 @@
 log_time 
2009-07-20 22:59:26.000
2009-07-20 22:59:29.000
2009-07-20 22:59:29.000

View File

@ -0,0 +1,2 @@
192.168.202.254 - - [20/Jul/2009:22:59:29 +0000] "GET /vmw/vSphere/default/vmkboot.gz HTTP/1.0" 404 46210 "-" "gPXE/0.9.7"
192.168.202.254 - - [20/Jul/2009:22:59:29 +0000] "GET /vmw/vSphere/default/vmkernel.gz HTTP/1.0" 200 78929 "-" "gPXE/0.9.7"

View File

@ -0,0 +1,6 @@
✘ error: unknown search table -- search_test1
 --> command-option:2
 | :delete-search-table search_test1 
 = help: :delete-search-table table-name
══════════════════════════════════════════════════════════════════════
Create an SQL table based on a regex search

View File

@ -0,0 +1,2 @@
192.168.202.254 - - [20/Jul/2009:22:59:26 +0000] "GET /vmw/cgi/tramp HTTP/1.0" 200 134 "-" "gPXE/0.9.7"
192.168.202.254 - - [20/Jul/2009:22:59:29 +0000] "GET /vmw/vSphere/default/vmkernel.gz HTTP/1.0" 200 78929 "-" "gPXE/0.9.7"

View File

@ -0,0 +1,6 @@
✘ error: no 'log_time' column found or not in ascending order, unable to create spectrogram
 --> command-option:2
 | :spectrogram sc_bytes 
 = help: :spectrogram field-name
══════════════════════════════════════════════════════════════════════
Visualize the given message field using a spectrogram

Some files were not shown because too many files have changed in this diff Show More