[perf] fix some performance issues with log vtabs

Fixes #995
This commit is contained in:
Timothy Stack 2022-06-10 21:17:02 -07:00
parent d9ae810dd6
commit 1891ceb7b5
74 changed files with 471 additions and 230 deletions

View File

@ -371,19 +371,14 @@ struct text_wrap_settings {
*/
class attr_line_t {
public:
attr_line_t()
{
this->al_attrs.reserve(RESERVE_SIZE);
}
attr_line_t() = default;
attr_line_t(std::string str) : al_string(std::move(str))
{
this->al_attrs.reserve(RESERVE_SIZE);
}
attr_line_t(const char* str) : al_string(str)
{
this->al_attrs.reserve(RESERVE_SIZE);
}
static inline attr_line_t from_ansi_str(const char* str)
@ -735,8 +730,6 @@ public:
void apply_hide();
const static size_t RESERVE_SIZE = 128;
std::string al_string;
string_attrs_t al_attrs;
};

View File

@ -208,7 +208,7 @@ user_message::to_attr_line(std::set<render_flags> flags) const
return retval;
}
fmt::terminal_color
static nonstd::optional<fmt::terminal_color>
curses_color_to_terminal_color(int curses_color)
{
switch (curses_color) {
@ -228,9 +228,9 @@ curses_color_to_terminal_color(int curses_color)
return fmt::terminal_color::green;
case COLOR_RED:
return fmt::terminal_color::red;
default:
return nonstd::nullopt;
}
ensure(false);
}
void
@ -274,19 +274,33 @@ println(FILE* file, const attr_line_t& al)
if (attr.sa_type == &VC_BACKGROUND) {
auto saw = string_attr_wrapper<int64_t>(&attr);
auto color = saw.get();
auto color_opt = curses_color_to_terminal_color(saw.get());
if (color >= 0) {
line_style
|= fmt::bg(curses_color_to_terminal_color(color));
if (color_opt) {
line_style |= fmt::bg(color_opt.value());
}
} else if (attr.sa_type == &VC_FOREGROUND) {
auto saw = string_attr_wrapper<int64_t>(&attr);
auto color = saw.get();
auto color_opt = curses_color_to_terminal_color(saw.get());
if (color >= 0) {
fg_style
= fmt::fg(curses_color_to_terminal_color(color));
if (color_opt) {
fg_style = fmt::fg(color_opt.value());
}
} else if (attr.sa_type == &SA_LEVEL) {
auto level = static_cast<log_level_t>(
attr.sa_value.get<int64_t>());
switch (level) {
case LEVEL_FATAL:
case LEVEL_CRITICAL:
case LEVEL_ERROR:
line_style |= fmt::fg(fmt::terminal_color::red);
break;
case LEVEL_WARNING:
line_style |= fmt::fg(fmt::terminal_color::yellow);
break;
default:
break;
}
} else if (attr.sa_type == &VC_ROLE) {
auto saw = string_attr_wrapper<role_t>(&attr);

View File

@ -99,7 +99,7 @@ public:
}
return retval;
};
}
std::pair<iterator, iterator> equal_range(LineType start, LineType stop)
{
@ -112,7 +112,7 @@ public:
auto up = std::upper_bound(this->begin(), this->end(), stop);
return std::make_pair(lb, up);
};
}
/**
* @param start The value to start the search for the next bookmark.

View File

@ -48,6 +48,11 @@ struct possibility {
possibility() = default;
bool operator<(const possibility& rhs) const { return p_key < rhs.p_key; }
bool operator>(const possibility& rhs) const { return rhs < *this; }
bool operator<=(const possibility& rhs) const { return !(rhs < *this); }
bool operator>=(const possibility& rhs) const { return !(*this < rhs); }
std::string p_key;
attr_line_t p_display_value;
};

View File

@ -110,21 +110,21 @@ breadcrumb_curses::reload_data()
auto& selected_crumb_ref
= this->bc_focused_crumbs[this->bc_selected_crumb.value()];
this->bc_possible_values = selected_crumb_ref.c_possibility_provider()
| lnav::itertools::sort_with([](const auto& lhs, const auto& rhs) {
return strnatcasecmp(lhs.p_key.size(),
lhs.p_key.data(),
rhs.p_key.size(),
rhs.p_key.data())
< 0;
});
this->bc_possible_values = selected_crumb_ref.c_possibility_provider();
nonstd::optional<size_t> selected_value;
this->bc_similar_values = this->bc_possible_values
| lnav::itertools::similar_to(
[](const auto& elem) { return elem.p_key; },
this->bc_current_search,
INT_MAX);
128)
| lnav::itertools::sort_with([](const auto& lhs, const auto& rhs) {
return strnatcasecmp(lhs.p_key.size(),
lhs.p_key.data(),
rhs.p_key.size(),
rhs.p_key.data())
< 0;
});
if (selected_crumb_ref.c_key.is<std::string>()
&& selected_crumb_ref.c_expected_input
!= breadcrumb::crumb::expected_input_t::anything)

View File

@ -409,7 +409,6 @@ private:
return;
}
const auto& pi = this->sw_scanner.get_input().get_string();
auto new_node = this->sw_hier_stage != nullptr
? std::move(this->sw_hier_stage)
: std::make_unique<lnav::document::hier_node>();

View File

@ -637,3 +637,10 @@ file_collection::rescan_files(bool required)
return retval;
}
void
file_collection::request_close(const std::shared_ptr<logfile>& lf)
{
lf->close();
this->fc_files_generation += 1;
}

View File

@ -162,6 +162,8 @@ struct file_collection {
void merge(file_collection& other);
void request_close(const std::shared_ptr<logfile>& lf);
void close_files(const std::vector<std::shared_ptr<logfile>>& files);
void regenerate_unique_file_names();

View File

@ -6,7 +6,7 @@
"url": "http://kb.vmware.com/kb/2004201",
"regex": {
"6.0+": {
"pattern": "^(?<timestamp>\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}(?:Z|[-+]\\d{2}:\\d{2})) (?<level>\\w+) (?<prc>[\\w\\-]+)\\[(?<tid>\\w+)\\] \\[(?<src>[^ \\]]+)\\s*(?: sub=(?<sub>.+?))?(?: opI(?:D|d)=(?<opid>[^\\]]+))?(?: user=(?<user>[^ \\]]+))?\\]\\s*(?<body>.*)(?:\\n.*)?$"
"pattern": "^(?:\\[#\\d+\\] )?(?<timestamp>\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}(?:Z|[-+]\\d{2}:\\d{2})) (?<level>\\w+) (?<prc>[\\w\\-]+)\\[(?<tid>\\w+)\\] \\[(?<src>[^ \\]]+)\\s*(?: sub=(?<sub>Http2(?:Client)?Session #\\d+|HTTP session map|HTTP server|Memory checker|Vimsvc\\.Ticket((?: |\\-)[0-9a-fA-F]{2})+|Req@(?:[\\w\\.\\-@/:]+)(?: M?[\\d\\.]+(?:U[\\d\\.]+)?)?|(?:SSL )?(?:[\\w\\.\\-@/:]+(?:\\[[0-9a-fA-F]+\\])?(?:\\([0-9a-fA-F]+\\))?(?:\\{\\d+\\})?)+)?)?(?:\\s+item=(?<item>[\\w\\.\\-@/:]+))?(?: opI(?:D|d)=(?<opid>[^\\]]+))?(?: user=(?<user>[^ \\]]+))?(?:\\s+reason=(?<reason>[^\\]]+))?\\]\\s*(?<body>.*)(?:\\n.*)?$"
},
"6.0+-nosrc": {
"pattern": "^(?<timestamp>\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}(?:Z|[-+]\\d{2}:\\d{2})) (?<level>\\w+) (?<prc>[\\w\\-]+)\\[(?<tid>\\w+)\\] \\[(?:opI(?:D|d)=(?<opid>[^\\]]+))\\]\\s*(?<body>.*)(?:\\n.*)?$"
@ -41,9 +41,11 @@
},
"level-field": "level",
"level": {
"error": "(?i)(alert|crit|emerg|error|fatal|panic)",
"warning": "(?i)(warning|warn)",
"trace": "verbose"
"info": "^(?i)info$",
"debug": "^(?i)debug$",
"error": "^(?i)(alert|crit|emerg|error|fatal|panic)$",
"warning": "^(?i)(warning|warn)$",
"trace": "^(?i)verbose$"
},
"opid-field": "opid",
"value": {
@ -71,6 +73,10 @@
"kind": "string",
"identifier": true
},
"item": {
"kind": "string",
"identifier": true
},
"opid": {
"kind": "string",
"identifier": true
@ -79,6 +85,9 @@
"kind": "string",
"identifier": true
},
"reason": {
"kind": "string"
},
"file": {
"kind": "string",
"identifier": true
@ -138,6 +147,33 @@
},
{
"line": "2022-06-01T13:24:08.243Z Section for vdtc, pid=4774, version=e.x.p, build=19889761, option=Release"
},
{
"line": "2022-06-02T12:21:26.285Z info vmware-vum-server[00932] [Originator@6876 sub=SessionAuthData reason=Timeout expired] [vciSessionAuthData 94] Session [521601f2-6eb3-0475-7be8-c30eed1040ab] is closed"
},
{
"line": "2022-06-01T20:17:31.352Z info vpxd[27059] [Originator@6876 sub=drmLogger item=FixNIOCViolation opID=SWI-5441881e] FixNIOCViolation worker starts for host [vim.HostSystem:host-588,esx-3-23.vlcm.com]"
},
{
"line": "2022-06-01T14:23:06.536Z info vpxd[27349] [Originator@6876 sub=Http2Session #28] Starting a Http2Session (server): <io_obj p:0x00007eff5867c618, h:477, <TCP '127.0.0.1 : 8093'>, <TCP '127.0.0.1 : 50504'>>"
},
{
"line": "2022-06-02T08:34:54.811Z info vpxd[44568] [Originator@6876 sub=SoapAdapter[0].HTTPService] Max buffered response size is 104857600 bytes"
},
{
"line": "2022-06-02T08:34:55.613Z info vpxd[44568] [Originator@6876 sub=SSL SoapAdapter[1].HTTPService] Max buffered response size is 104857600 bytes"
},
{
"line": "2022-06-02T08:34:55.753Z info vpxd[44568] [Originator@6876 sub=Req@vsan/VMC M5] Created version logger for vsan/VMC M5 (vsan.version.version8)"
},
{
"line": "2022-06-02T08:34:55.421Z info vpxd[44568] [Originator@6876 sub=Req@vsan/vSAN 7.0U2] Created version logger for vsan/vSAN 7.0U2 (vsan.version.version16)"
},
{
"line": "2022-06-02T08:33:42.327Z info StatsMonitor[40881] [Originator@6876 sub=LinuxStatsProvider(00005575a7a395f0)] Created"
},
{
"line": "2022-06-02T08:33:42.692Z info rhttpproxy[40998] [Originator@6876 sub=WorkQueue.rhttpproxy.packetsniffer[0000562e3c06fee0].queue] Created: WorkQueue.rhttpproxy.packetsniffer[0000562e3c06fee0].queue, type = serial, priority = 16, itemWeight = 1"
}
]
}

View File

@ -1478,9 +1478,11 @@ looper()
} else if (in_revents & POLLIN) {
int ch;
auto old_gen
= lnav_data.ld_active_files.fc_files_generation;
while ((ch = getch()) != ERR) {
lnav_data.ld_user_message_source.clear();
alerter::singleton().new_input(ch);
lnav_data.ld_input_dispatcher.new_input(current_time,
@ -1504,7 +1506,13 @@ looper()
case ln_mode_t::PAGING:
case ln_mode_t::FILTER:
case ln_mode_t::FILES:
next_rescan_time = next_status_update_time + 1s;
if (old_gen
== lnav_data.ld_active_files
.fc_files_generation) {
next_rescan_time = next_status_update_time + 1s;
} else {
next_rescan_time = next_status_update_time;
}
break;
case ln_mode_t::BREADCRUMBS:
case ln_mode_t::COMMAND:

View File

@ -2507,7 +2507,7 @@ com_close(exec_context& ec, std::string cmdline, std::vector<std::string>& args)
return ec.make_error("no text files are opened");
} else {
fn = tss.current_file()->get_filename();
tss.current_file()->close();
lnav_data.ld_active_files.request_close(tss.current_file());
if (tss.size() == 1) {
lnav_data.ld_view_stack.pop_back();
@ -2525,7 +2525,7 @@ com_close(exec_context& ec, std::string cmdline, std::vector<std::string>& args)
actual_path = lf->get_actual_path();
fn = lf->get_filename();
if (!ec.ec_dry_run) {
lf->close();
lnav_data.ld_active_files.request_close(lf);
}
}
} else {

View File

@ -647,7 +647,7 @@ external_log_format::scan_for_partial(shared_buffer_ref& sbr,
return false;
}
auto pat = this->elf_pattern_order[this->last_pattern_index()];
auto& pat = this->elf_pattern_order[this->last_pattern_index()];
pcre_input pi(sbr.get_data(), 0, sbr.length());
if (!this->lf_multiline) {
@ -682,7 +682,8 @@ log_format::scan_result_t
external_log_format::scan(logfile& lf,
std::vector<logline>& dst,
const line_info& li,
shared_buffer_ref& sbr)
shared_buffer_ref& sbr,
scan_batch_context& sbc)
{
if (this->elf_type == elf_type_t::ELF_TYPE_JSON) {
yajlpp_parse_context& ypc = *(this->jlf_parse_context);
@ -781,8 +782,8 @@ external_log_format::scan(logfile& lf,
int pat_index = orig_lock;
while (::next_format(this->elf_pattern_order, curr_fmt, pat_index)) {
auto fpat = this->elf_pattern_order[curr_fmt];
auto& pat = fpat->p_pcre;
auto* fpat = this->elf_pattern_order[curr_fmt].get();
auto* pat = fpat->p_pcre.get();
if (fpat->p_module_format) {
continue;
@ -840,7 +841,7 @@ external_log_format::scan(logfile& lf,
}
}
log_level_t level = this->convert_level(pi, level_cap);
auto level = this->convert_level(pi, level_cap);
this->lf_timestamp_flags = log_time_tm.et_flags;
@ -854,12 +855,12 @@ external_log_format::scan(logfile& lf,
if (opid_cap != nullptr && !opid_cap->empty()) {
auto opid_str = pi.get_substr(opid_cap);
{
safe::WriteAccess<logfile::safe_opid_map> writable_opid_map(
lf.get_opids());
auto opid_iter = writable_opid_map->find(opid_str);
auto opid_iter = sbc.sbc_opids.find(opid_str);
if (opid_iter == writable_opid_map->end()) {
(*writable_opid_map)[opid_str] = log_tv;
if (opid_iter == sbc.sbc_opids.end()) {
sbc.sbc_opids[opid_str] = opid_time_range{log_tv, log_tv};
} else {
opid_iter->second.otr_end = log_tv;
}
}
opid = hash_str(pi.get_substr_start(opid_cap), opid_cap->length());
@ -992,7 +993,7 @@ external_log_format::module_scan(const pcre_input& pi,
int curr_fmt = -1, fmt_lock = -1;
while (::next_format(elf->elf_pattern_order, curr_fmt, fmt_lock)) {
auto fpat = elf->elf_pattern_order[curr_fmt];
auto& fpat = elf->elf_pattern_order[curr_fmt];
auto& pat = fpat->p_pcre;
if (!fpat->p_module_format) {

View File

@ -341,7 +341,8 @@ public:
virtual scan_result_t scan(logfile& lf,
std::vector<logline>& dst,
const line_info& li,
shared_buffer_ref& sbr)
shared_buffer_ref& sbr,
scan_batch_context& sbc)
= 0;
virtual bool scan_for_partial(shared_buffer_ref& sbr, size_t& len_out) const

View File

@ -143,7 +143,8 @@ public:
scan_result_t scan(logfile& lf,
std::vector<logline>& dst,
const line_info& offset,
shared_buffer_ref& sbr);
shared_buffer_ref& sbr,
scan_batch_context& sbc);
bool scan_for_partial(shared_buffer_ref& sbr, size_t& len_out) const;

View File

@ -32,6 +32,8 @@
#ifndef lnav_log_format_fwd_hh
#define lnav_log_format_fwd_hh
#include <unordered_map>
#include <sys/types.h>
#include "base/file_range.hh"
@ -42,6 +44,17 @@
class log_format;
struct opid_time_range {
struct timeval otr_begin;
struct timeval otr_end;
};
using log_opid_map = std::unordered_map<std::string, opid_time_range>;
struct scan_batch_context {
log_opid_map sbc_opids;
};
/**
* Metadata for a single line in a log file.
*/

View File

@ -160,7 +160,8 @@ class generic_log_format : public log_format {
scan_result_t scan(logfile& lf,
std::vector<logline>& dst,
const line_info& li,
shared_buffer_ref& sbr) override
shared_buffer_ref& sbr,
scan_batch_context& sbc) override
{
struct exttm log_time;
struct timeval log_tv;
@ -522,7 +523,8 @@ public:
scan_result_t scan(logfile& lf,
std::vector<logline>& dst,
const line_info& li,
shared_buffer_ref& sbr) override
shared_buffer_ref& sbr,
scan_batch_context& sbc) override
{
static const pcrepp SEP_RE(R"(^#separator\s+(.+))");
@ -1136,7 +1138,8 @@ public:
scan_result_t scan(logfile& lf,
std::vector<logline>& dst,
const line_info& li,
shared_buffer_ref& sbr) override
shared_buffer_ref& sbr,
scan_batch_context& sbc) override
{
static const auto* W3C_LOG_NAME = intern_string::lookup("w3c_log");
static const auto* X_FIELDS_NAME = intern_string::lookup("x_fields");
@ -1603,7 +1606,8 @@ public:
scan_result_t scan(logfile& lf,
std::vector<logline>& dst,
const line_info& li,
shared_buffer_ref& sbr) override
shared_buffer_ref& sbr,
scan_batch_context& sbc) override
{
auto p = logfmt::parser(
string_fragment{sbr.get_data(), 0, (int) sbr.length()});

View File

@ -203,6 +203,15 @@ log_vtab_impl::is_valid(log_cursor& lc, logfile_sub_source& lss)
return false;
}
if (lc.lc_log_path && lf->get_filename() != lc.lc_log_path.value()) {
return false;
}
if (lc.lc_unique_path && lf->get_unique_path() != lc.lc_unique_path.value())
{
return false;
}
if (lc.lc_opid && lf_iter->get_opid() != lc.lc_opid.value().value) {
return false;
}
@ -967,6 +976,11 @@ vt_filter(sqlite3_vtab_cursor* p_vtc,
if (col > (VT_COL_MAX + vt->vi->vi_column_count - 1)) {
int post_col_number
= col - (VT_COL_MAX + vt->vi->vi_column_count - 1) - 1;
nonstd::optional<timeval> min_time;
nonstd::optional<timeval> max_time;
nonstd::optional<log_cursor::opid_hash> opid_val;
nonstd::optional<std::string> log_path;
nonstd::optional<std::string> unique_path;
switch (post_col_number) {
case 0: {
@ -976,7 +990,6 @@ vt_filter(sqlite3_vtab_cursor* p_vtc,
const auto* opid
= (const char*) sqlite3_value_text(argv[lpc]);
auto opid_len = sqlite3_value_bytes(argv[lpc]);
nonstd::optional<timeval> min_time;
for (const auto& file_data : *vt->lss) {
safe::ReadAccess<logfile::safe_opid_map>
r_opid_map(
@ -986,43 +999,100 @@ vt_filter(sqlite3_vtab_cursor* p_vtc,
continue;
}
if (!min_time
|| iter->second < min_time.value()) {
min_time = iter->second;
|| iter->second.otr_begin
< min_time.value()) {
min_time = iter->second.otr_begin;
}
if (!max_time
|| max_time.value() < iter->second.otr_end)
{
max_time = iter->second.otr_end;
}
}
if (!min_time) {
log_debug("no min time");
p_cur->log_cursor.lc_curr_line
= p_cur->log_cursor.lc_end_line;
continue;
}
log_debug("found min time: %d.%06d",
min_time.value().tv_sec,
min_time.value().tv_usec);
auto vl_opt
= vt->lss->row_for_time(min_time.value());
if (!vl_opt) {
log_debug("time not found");
p_cur->log_cursor.lc_curr_line
= p_cur->log_cursor.lc_end_line;
opid_val = log_cursor::opid_hash{
static_cast<unsigned int>(
hash_str(opid, opid_len))};
log_debug("filter opid %d", opid_val.value().value);
break;
}
case 3: {
if (sqlite3_value_type(argv[lpc]) != SQLITE3_TEXT) {
continue;
}
log_debug("got row %d", (int) vl_opt.value());
p_cur->log_cursor.update(
index[lpc].op,
vl_opt.value(),
log_cursor::constraint_t::none);
const auto* filename
= (const char*) sqlite3_value_text(argv[lpc]);
auto fn_len = sqlite3_value_bytes(argv[lpc]);
const auto fn_str = std::string(filename, fn_len);
log_cursor::opid_hash opid_val;
opid_val.value = hash_str(opid, opid_len);
p_cur->log_cursor.lc_opid = opid_val;
log_debug("filter opid %d",
p_cur->log_cursor.lc_opid.value().value);
for (const auto& file_data : *vt->lss) {
auto lf = file_data->get_file_ptr();
if (fn_str == lf->get_filename()) {
min_time = lf->front().get_timeval();
max_time = lf->back().get_timeval();
}
}
if (min_time) {
log_path = std::move(fn_str);
}
break;
}
case 4: {
if (sqlite3_value_type(argv[lpc]) != SQLITE3_TEXT) {
continue;
}
const auto* filename
= (const char*) sqlite3_value_text(argv[lpc]);
auto fn_len = sqlite3_value_bytes(argv[lpc]);
const auto fn_str = std::string(filename, fn_len);
for (const auto& file_data : *vt->lss) {
auto lf = file_data->get_file_ptr();
if (fn_str == lf->get_unique_path()) {
min_time = lf->front().get_timeval();
max_time = lf->back().get_timeval();
}
}
if (min_time) {
unique_path = std::move(fn_str);
}
break;
}
}
if (!min_time) {
log_debug("no min time");
p_cur->log_cursor.lc_curr_line
= p_cur->log_cursor.lc_end_line;
continue;
}
log_debug("found min time: %d.%06d",
min_time.value().tv_sec,
min_time.value().tv_usec);
auto vl_opt = vt->lss->row_for_time(min_time.value());
if (!vl_opt) {
log_debug("time not found");
p_cur->log_cursor.lc_curr_line
= p_cur->log_cursor.lc_end_line;
continue;
}
auto vl_max_opt = vt->lss->row_for_time(max_time.value());
log_debug("got row %d", (int) vl_opt.value());
p_cur->log_cursor.update(index[lpc].op,
vl_opt.value(),
log_cursor::constraint_t::none);
if (vl_max_opt) {
log_debug("got max row %d", (int) vl_max_opt.value());
p_cur->log_cursor.lc_end_line
= vl_max_opt.value() + 1_vl;
}
p_cur->log_cursor.lc_opid = opid_val;
p_cur->log_cursor.lc_log_path = log_path;
p_cur->log_cursor.lc_unique_path = unique_path;
}
break;
}
@ -1068,6 +1138,7 @@ vt_best_index(sqlite3_vtab* tab, sqlite3_index_info* p_info)
}
auto col = p_info->aConstraint[lpc].iColumn;
log_debug("column number %d", col);
switch (col) {
case VT_COL_LINE_NUMBER: {
log_debug("line number index %d", p_info->aConstraint[lpc].op);
@ -1081,6 +1152,7 @@ vt_best_index(sqlite3_vtab* tab, sqlite3_index_info* p_info)
int post_col_number
= col - (VT_COL_MAX + vt->vi->vi_column_count - 1) - 1;
log_debug("post column numer %d", post_col_number);
switch (post_col_number) {
case 0: {
log_debug("opid index");
@ -1089,6 +1161,20 @@ vt_best_index(sqlite3_vtab* tab, sqlite3_index_info* p_info)
p_info->aConstraintUsage[lpc].argvIndex = argvInUse;
break;
}
case 3: {
log_debug("log_path index");
argvInUse += 1;
indexes.push_back(p_info->aConstraint[lpc]);
p_info->aConstraintUsage[lpc].argvIndex = argvInUse;
break;
}
case 4: {
log_debug("log_unique_path index");
argvInUse += 1;
indexes.push_back(p_info->aConstraint[lpc]);
p_info->aConstraintUsage[lpc].argvIndex = argvInUse;
break;
}
}
}
break;

View File

@ -66,6 +66,8 @@ struct log_cursor {
vis_line_t lc_end_line;
nonstd::optional<opid_hash> lc_opid;
nonstd::optional<std::string> lc_log_path;
nonstd::optional<std::string> lc_unique_path;
enum class constraint_t {
none,

View File

@ -174,7 +174,9 @@ logfile::set_format_base_time(log_format* lf)
}
bool
logfile::process_prefix(shared_buffer_ref& sbr, const line_info& li)
logfile::process_prefix(shared_buffer_ref& sbr,
const line_info& li,
scan_batch_context& sbc)
{
log_format::scan_result_t found = log_format::SCAN_NO_MATCH;
size_t prescan_size = this->lf_index.size();
@ -186,7 +188,7 @@ logfile::process_prefix(shared_buffer_ref& sbr, const line_info& li)
prescan_time = this->lf_index[prescan_size - 1].get_time();
}
/* We've locked onto a format, just use that scanner. */
found = this->lf_format->scan(*this, this->lf_index, li, sbr);
found = this->lf_format->scan(*this, this->lf_index, li, sbr, sbc);
} else if (this->lf_options.loo_detect_format
&& this->lf_index.size()
< injector::get<const lnav::logfile::config&>()
@ -222,7 +224,7 @@ logfile::process_prefix(shared_buffer_ref& sbr, const line_info& li)
(*iter)->clear();
this->set_format_base_time(iter->get());
found = (*iter)->scan(*this, this->lf_index, li, sbr);
found = (*iter)->scan(*this, this->lf_index, li, sbr, sbc);
if (found == log_format::SCAN_MATCH) {
#if 0
require(this->lf_index.size() == 1 ||
@ -458,6 +460,7 @@ logfile::rebuild_index(nonstd::optional<ui_clock::time_point> deadline)
log_debug(
"loading file... %s:%d", this->lf_filename.c_str(), begin_size);
}
scan_batch_context sbc;
auto prev_range = file_range{off};
while (limit > 0) {
auto load_result = this->lf_line_buffer.load_next_line(prev_range);
@ -524,7 +527,7 @@ logfile::rebuild_index(nonstd::optional<ui_clock::time_point> deadline)
this->lf_longest_line
= std::max(this->lf_longest_line, sbr.length());
this->lf_partial_line = li.li_partial;
sort_needed = this->process_prefix(sbr, li) || sort_needed;
sort_needed = this->process_prefix(sbr, li, sbc) || sort_needed;
if (old_size > this->lf_index.size()) {
old_size = 0;
@ -606,6 +609,28 @@ logfile::rebuild_index(nonstd::optional<ui_clock::time_point> deadline)
this->lf_index_size = prev_range.next_offset();
this->lf_stat = st;
{
safe::WriteAccess<logfile::safe_opid_map> writable_opid_map(
this->lf_opids);
for (const auto& opid_pair : sbc.sbc_opids) {
auto opid_iter = writable_opid_map->find(opid_pair.first);
if (opid_iter == writable_opid_map->end()) {
writable_opid_map->emplace(opid_pair);
} else {
if (opid_pair.second.otr_begin
< opid_iter->second.otr_begin) {
opid_iter->second.otr_begin
= opid_pair.second.otr_begin;
}
if (opid_iter->second.otr_end < opid_pair.second.otr_end) {
opid_iter->second.otr_end = opid_pair.second.otr_end;
}
}
}
}
if (sort_needed) {
retval = rebuild_result_t::NEW_ORDER;
} else {

View File

@ -365,8 +365,7 @@ public:
note_map get_notes() const { return *this->lf_notes.readAccess(); }
using opid_map = std::unordered_map<std::string, timeval>;
using safe_opid_map = safe::Safe<opid_map>;
using safe_opid_map = safe::Safe<log_opid_map>;
safe_opid_map& get_opids() { return this->lf_opids; }
@ -378,7 +377,9 @@ protected:
* @param prefix The contents of the line.
* @param len The length of the 'prefix' string.
*/
bool process_prefix(shared_buffer_ref& sbr, const line_info& li);
bool process_prefix(shared_buffer_ref& sbr,
const line_info& li,
scan_batch_context& sbc);
void set_format_base_time(log_format* lf);

View File

@ -1452,6 +1452,15 @@ logfile_sub_source::eval_sql_filter(sqlite3_stmt* stmt,
}
continue;
}
if (strcmp(name, ":log_format") == 0) {
const auto format_name = format->get_name();
sqlite3_bind_text(stmt,
lpc + 1,
format_name.get(),
format_name.size(),
SQLITE_STATIC);
continue;
}
if (strcmp(name, ":log_path") == 0) {
const auto& filename = lf->get_filename();
sqlite3_bind_text(stmt,
@ -1461,6 +1470,15 @@ logfile_sub_source::eval_sql_filter(sqlite3_stmt* stmt,
SQLITE_STATIC);
continue;
}
if (strcmp(name, ":log_unique_path") == 0) {
const auto& filename = lf->get_unique_path();
sqlite3_bind_text(stmt,
lpc + 1,
filename.c_str(),
filename.length(),
SQLITE_STATIC);
continue;
}
if (strcmp(name, ":log_text") == 0) {
sqlite3_bind_text(
stmt, lpc + 1, sbr.get_data(), sbr.length(), SQLITE_STATIC);
@ -1481,6 +1499,21 @@ logfile_sub_source::eval_sql_filter(sqlite3_stmt* stmt,
}
continue;
}
if (strcmp(name, ":log_opid") == 0) {
auto opid_attr_opt = get_string_attr(sa, logline::L_OPID);
if (opid_attr_opt) {
auto& sar = opid_attr_opt.value().saw_string_attr->sa_range;
sqlite3_bind_text(stmt,
lpc + 1,
sbr.get_data_at(sar.lr_start),
sar.length(),
SQLITE_STATIC);
} else {
sqlite3_bind_null(stmt, lpc + 1);
}
continue;
}
if (strcmp(name, ":log_raw_text") == 0) {
auto res = lf->read_raw_message(ll);
@ -1645,20 +1678,14 @@ logfile_sub_source::remove_file(std::shared_ptr<logfile> lf)
mark_iter != this->lss_user_marks.end();
++mark_iter)
{
content_line_t mark_curr
= content_line_t(file_index * MAX_LINES_PER_FILE);
content_line_t mark_end
auto mark_curr = content_line_t(file_index * MAX_LINES_PER_FILE);
auto mark_end
= content_line_t((file_index + 1) * MAX_LINES_PER_FILE);
bookmark_vector<content_line_t>::iterator bv_iter;
bookmark_vector<content_line_t>& bv = mark_iter->second;
auto& bv = mark_iter->second;
auto file_range = bv.equal_range(mark_curr, mark_end);
while ((bv_iter = std::lower_bound(bv.begin(), bv.end(), mark_curr))
!= bv.end())
{
if (*bv_iter >= mark_end) {
break;
}
mark_iter->second.erase(bv_iter);
if (file_range.first != file_range.second) {
bv.erase(file_range.first, file_range.second);
}
}
@ -2133,22 +2160,18 @@ logfile_sub_source::text_crumbs_for_line(int line,
opid_str,
attr_line_t().append(lnav::roles::identifier(opid_str)),
[this]() -> std::vector<breadcrumb::possibility> {
std::set<std::string> opids;
std::vector<breadcrumb::possibility> retval;
for (const auto& file_data : this->lss_files) {
safe::ReadAccess<logfile::safe_opid_map> r_opid_map(
file_data->get_file_ptr()->get_opids());
for (const auto& pair : *r_opid_map) {
opids.insert(pair.first);
retval.emplace_back(pair.first);
}
}
return opids | lnav::itertools::map([](const auto& elem) {
return breadcrumb::possibility{
elem,
};
});
return retval;
},
[ec = this->lss_exec_context](const auto& opid) {
static const std::string MOVE_STMT = R"(;UPDATE lnav_views

View File

@ -79,7 +79,13 @@ plain_text_source::replace_with(const attr_line_t& text_lines)
{
this->tds_lines.clear();
this->tds_doc_sections = lnav::document::discover_metadata(text_lines);
this->tds_lines = to_text_line(text_lines.split_lines());
file_off_t off = 0;
for (auto& line : text_lines.split_lines()) {
auto line_len = line.length() + 1;
this->tds_lines.emplace_back(off, std::move(line));
off += line_len;
}
this->tds_longest_line = this->compute_longest_line();
return *this;
}

View File

@ -93,6 +93,10 @@ public:
std::unique_ptr<lnav::document::hier_node> take_hier_root()
{
if (this->pp_hier_stage == nullptr && !this->pp_hier_nodes.empty()) {
this->pp_hier_stage = std::move(this->pp_hier_nodes.back());
this->pp_hier_nodes.pop_back();
}
return std::move(this->pp_hier_stage);
}

View File

@ -223,7 +223,10 @@ add_filter_expr_possibilities(readline_curses* rlc,
":log_mark",
":log_comment",
":log_tags",
":log_opid",
":log_format",
":log_path",
":log_unique_path",
":log_text",
":log_body",
":log_raw_text",

View File

@ -961,11 +961,13 @@ annotate_sql_statement(attr_line_t& al)
bool found_open = false;
ssize_t lpc;
start = iter->sa_range.lr_end;
for (lpc = iter->sa_range.lr_end; lpc < (int) line.length(); lpc++) {
if (line[lpc] == '(') {
found_open = true;
break;
} else if (!isspace(line[lpc])) {
}
if (!isspace(line[lpc])) {
break;
}
}
@ -994,8 +996,6 @@ annotate_sql_statement(attr_line_t& al)
}
sa.emplace_back(func_range, SQL_FUNCTION_ATTR.value());
}
start = iter->sa_range.lr_end;
}
remove_string_attr(sa, &SQL_PAREN_ATTR);

View File

@ -280,6 +280,8 @@ CREATE TABLE lnav_views (
break;
}
case 10: {
static const size_t MAX_POSSIBILITIES = 128;
auto* tss = tc.get_sub_source();
if (tss != nullptr && tss->text_line_count() > 0) {
@ -314,10 +316,14 @@ CREATE TABLE lnav_views (
};
});
for (const auto& crumb : crumbs) {
auto poss = crumb.c_possibility_provider();
if (poss.size() > MAX_POSSIBILITIES) {
poss.resize(MAX_POSSIBILITIES);
}
tlm.tlm_crumbs.emplace_back(
crumb.c_display_value.get_string(),
crumb.c_search_placeholder,
crumb.c_possibility_provider());
std::move(poss));
}
auto ret = top_line_meta_handlers.to_json_string(tlm);
to_sqlite(ctx, ret);

View File

@ -157,13 +157,14 @@ main(int argc, char* argv[])
logfile_open_options loo;
auto open_res = logfile::open(argv[lpc], loo);
auto lf = open_res.unwrap();
scan_batch_context sbc;
for (iter = root_formats.begin();
iter != root_formats.end() && !found;
++iter) {
line_info li = {{13}};
(*iter)->clear();
if ((*iter)->scan(*lf, index, li, sbr)
if ((*iter)->scan(*lf, index, li, sbr, sbc)
== log_format::SCAN_MATCH) {
format = (*iter)->specialized();
found = true;

View File

@ -1,3 +1,3 @@
192.168.202.254 - - [20/Jul/2009:21:59:26 +0000] "GET /vmw/cgi/tramp HTTP/1.0" 200 134 "-" "gPXE/0.9.7"
192.168.202.254 - - [20/Jul/2009:21: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:21: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:21:59:29 +0000] "GET /vmw/vSphere/default/vmkernel.gz HTTP/1.0" 200 78929 "-" "gPXE/0.9.7"

View File

@ -1,3 +1,3 @@
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/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/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

@ -1,2 +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/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

@ -1,2 +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/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

@ -1,3 +1,3 @@
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/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/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

@ -1,3 +1,3 @@
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/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/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

@ -1,2 +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/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

@ -1 +1 @@
2009-07-20 22:59:30,221:ERROR:Goodbye, World!
 2009-07-20 22:59:30,221:ERROR:Goodbye, World!

View File

@ -1 +1 @@
2009-07-20 22:59:30,221:ERROR:Goodbye, World!
2009-07-20 22:59:30,221:ERROR:Goodbye, World!

View File

@ -1 +1 @@
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/vmkboot.gz HTTP/1.0" 404 46210 "-" "gPXE/0.9.7"

View File

@ -1,2 +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/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

@ -1,3 +1,3 @@
192.168.202.254 - - [20/Jul/2009:22:59:26 +0000] "GET ⋮ HTTP/1.0" 200 134 "-" "gPXE/0.9.7"
192.168.202.254 - - [20/Jul/2009:22:59:29 +0000] "GET ⋮ HTTP/1.0" 404 46210 "-" "gPXE/0.9.7"
192.168.202.254 - - [20/Jul/2009:22:59:29 +0000] "GET  HTTP/1.0" 404 46210 "-" "gPXE/0.9.7"
192.168.202.254 - - [20/Jul/2009:22:59:29 +0000] "GET ⋮ HTTP/1.0" 200 78929 "-" "gPXE/0.9.7"

View File

@ -1,2 +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/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

@ -1,2 +1,2 @@
2009-07-20 22:59:30,221:ERROR:Goodbye, World!
2009-07-20 22:59:30,221:ERROR:Goodbye, World!
2009-07-20 22:59:30,221:ERROR:Goodbye, World!
 2009-07-20 22:59:30,221:ERROR:Goodbye, World!

View File

@ -1,3 +1,3 @@
2009-07-20 22:59:27,672:DEBUG:Hello, World!
How are you today?
2009-07-20 22:59:30,221:ERROR:Goodbye, World!
2009-07-20 22:59:30,221:ERROR:Goodbye, World!

View File

@ -1,2 +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/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

@ -1,2 +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/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

@ -1,3 +1,3 @@
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/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/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

@ -1,3 +1,3 @@
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/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/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

@ -1,3 +1,3 @@
⋮ - - [20/Jul/2009:22:59:26 +0000] "GET ⋮ HTTP/1.0" 200 134 "-" "gPXE/0.9.7"
⋮ - - [20/Jul/2009:22:59:29 +0000] "GET ⋮ HTTP/1.0" 404 46210 "-" "gPXE/0.9.7"
 - - [20/Jul/2009:22:59:29 +0000] "GET  HTTP/1.0" 404 46210 "-" "gPXE/0.9.7"
⋮ - - [20/Jul/2009:22:59:29 +0000] "GET ⋮ HTTP/1.0" 200 78929 "-" "gPXE/0.9.7"

View File

@ -1 +1 @@
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/vmkboot.gz HTTP/1.0" 404 46210 "-" "gPXE/0.9.7"

View File

@ -1,3 +1,3 @@
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/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/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

@ -1,2 +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/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

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

View File

@ -1,2 +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/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

@ -25,8 +25,8 @@ Apr 7 05:49:53 Tim-Stacks-iMac.local GoogleSoftwareUpdateDaemon[17212]: -[KSUpd
</o:app>
</o:gupdate>
>
Apr 7 07:31:56 Tim-Stacks-iMac.local VirtualBox[36403]: WARNING: The Gestalt selector gestaltSystemVersion is returning 10.9.2 instead of 10.10.2. Use NSProcessInfo's operatingSystemVersion property to get correct system version number.
Call location:
Apr 7 07:31:56 Tim-Stacks-iMac.local VirtualBox[36403]: WARNING: The Gestalt selector gestaltSystemVersion is returning 10.9.2 instead of 10.10.2. Use NSProcessInfo's operatingSystemVersion property to get correct system version number.
 Call location:
Apr 7 07:31:56 Tim-Stacks-iMac.local VirtualBox[36403]: 0 CarbonCore 0x00007fff8a9b3d9b ___Gestalt_SystemVersion_block_invoke + 113
Apr 7 07:31:56 Tim-Stacks-iMac.local VirtualBox[36403]: 1 libdispatch.dylib 0x00007fff8bc84c13 _dispatch_client_callout + 8
Apr 7 07:32:56 Tim-Stacks-iMac.local logger[234]: Bad data {

View File

@ -1,2 +1,2 @@
Feb 3 09:23:38 veridian automount[7998]: lookup(file): lookup for foobar failed
Feb 3 09:23:38 veridian automount[7998]: lookup(file): lookup for foobar failed
Jan 3 09:23:38 veridian automount[16442]: attempting to mount entry /auto/opt

View File

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

View File

@ -1,3 +1,3 @@
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/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/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

@ -1,3 +1,3 @@
192.168.202.254 - - [01/Jan/2010:00:00:00 +0000] "GET /vmw/cgi/tramp HTTP/1.0" 200 134 "-" "gPXE/0.9.7"
192.168.202.254 - - [01/Jan/2010:00:00:03 +0000] "GET /vmw/vSphere/default/vmkboot.gz HTTP/1.0" 404 46210 "-" "gPXE/0.9.7"
192.168.202.254 - - [01/Jan/2010:00:00:03 +0000] "GET /vmw/vSphere/default/vmkboot.gz HTTP/1.0" 404 46210 "-" "gPXE/0.9.7"
192.168.202.254 - - [01/Jan/2010:00:00:03 +0000] "GET /vmw/vSphere/default/vmkernel.gz HTTP/1.0" 200 78929 "-" "gPXE/0.9.7"

View File

@ -1,2 +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/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

@ -18,12 +18,12 @@
[2013-09-06T22:01:49.124] STATS 1 beat per second
[2013-09-06T22:01:49.124] WARNING not looking good
[2013-09-06T22:01:49.124] WARNING not looking good
[2013-09-06T22:01:49.124] ERROR looking bad
[2013-09-06T22:01:49.124] ERROR looking bad
[2013-09-06T22:01:49.124] CRITICAL sooo bad
[2013-09-06T22:01:49.124] CRITICAL sooo bad
[2013-09-06T22:01:49.124] FATAL shoot
obj: { "field1" : "hi", "field2": 2 }
arr: ["hi", {"sub1": true}]
[2013-09-06T22:01:49.124] FATAL shoot
 obj: { "field1" : "hi", "field2": 2 }
 arr: ["hi", {"sub1": true}]

View File

@ -17,13 +17,13 @@
@fields: { "lvl": "DEBUG", "msg": "Details..."}
2013-09-06T22:01:49.124 STATS 1 beat per second
@fields: { "lvl": "STATS", "msg": "1 beat per second"}
2013-09-06T22:01:49.124 WARNING not looking good
@fields: { "lvl": "WARNING", "msg": "not looking good"}
2013-09-06T22:01:49.124 ERROR looking bad
@fields: { "lvl": "ERROR", "msg": "looking bad"}
2013-09-06T22:01:49.124 CRITICAL sooo bad
@fields: { "lvl": "CRITICAL", "msg": "sooo bad"}
2013-09-06T22:01:49.124 FATAL shoot
@fields/trace#: line:1
@fields/trace#: line:2
@fields: { "lvl": "FATAL", "msg": "shoot", "trace": ["line:1", "line:2"]}
2013-09-06T22:01:49.124 WARNING not looking good
 @fields: { "lvl": "WARNING", "msg": "not looking good"}
2013-09-06T22:01:49.124 ERROR looking bad
 @fields: { "lvl": "ERROR", "msg": "looking bad"}
2013-09-06T22:01:49.124 CRITICAL sooo bad
 @fields: { "lvl": "CRITICAL", "msg": "sooo bad"}
2013-09-06T22:01:49.124 FATAL shoot
 @fields/trace#: line:1
 @fields/trace#: line:2
 @fields: { "lvl": "FATAL", "msg": "shoot", "trace": ["line:1", "line:2"]}

View File

@ -1,2 +1,2 @@
2018-08-21T14:04:21.221 38708007 medusa-GpsLocator.service python[184] FATAL GPS Reference longitude: 7.358143333
2018-08-21T14:04:21.221 38708007 medusa-GpsLocator.service python[184] FATAL GPS Reference longitude: 7.358143333
2018-08-21T14:04:21.221 38708007 medusa-GpsLocator.service python[184] INFO GPS Reference latitude: 46.908706667

View File

@ -1,3 +1,3 @@
2017-03-24T20:06:26.240 1.1.1.1 GET 200 /example/uri/5
2017-03-24T20:12:47.764 1.1.1.1 GET 500 /example/uri/5
2017-03-24T20:15:31.694 1.1.1.1 GET 400 /example/uri/5
2017-03-24T20:12:47.764 1.1.1.1 GET 500 /example/uri/5
2017-03-24T20:15:31.694 1.1.1.1 GET 400 /example/uri/5

View File

@ -1,4 +1,4 @@
2013-09-06T20:00:49.124 abc 49 def 0 c.e.foo Starting up service
2013-09-06T22:00:49.124 abc 49 def 0 c.e.foo Shutting down service
user: steve@example.com
2013-09-06T22:01:49.124 abc 49 def 10 c.e.foo looking bad
2013-09-06T22:01:49.124 abc 49 def 10 c.e.foo looking bad

View File

@ -18,8 +18,8 @@
[2013-09-06T22:01:49.124] STATS 1 beat per secondbork bork bork
[2013-09-06T22:01:49.124] WARNING not looking goodbork bork bork
[2013-09-06T22:01:49.124] WARNING not looking goodbork bork bork
[2013-09-06T22:01:49.124] ERROR looking badbork bork bork
[2013-09-06T22:01:49.124] ERROR looking badbork bork bork
[2013-09-06T22:01:49.124] CRITICAL sooo badbork bork bork
[2013-09-06T22:01:49.124] CRITICAL sooo badbork bork bork

View File

@ -1,50 +1,50 @@
2016-08-03T12:06:31.009 - ;Exception initializing page context; java.lang.NoClassDefFoundError: javax/el/StaticFieldELResolver
at org.apache.jasper.runtime.JspFactoryImpl.internalGetPageContext(JspFactoryImpl.java:172)
at org.apache.jasper.runtime.JspFactoryImpl.getPageContext(JspFactoryImpl.java:123)
at org.apache.jsp.errors._404_002dnot_002dfound_jsp._jspService(_404_002dnot_002dfound_jsp.java:38)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:111)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:411)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:473)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:377)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at collective.config.startup.DamFilter.doFilter(DamFilter.java:270)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:748)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:488)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:411)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:338)
at org.apache.catalina.core.StandardHostValve.custom(StandardHostValve.java:476)
at org.apache.catalina.core.StandardHostValve.status(StandardHostValve.java:345)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:210)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:957)
at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:683)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:620)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:744)
Caused by: java.lang.ClassNotFoundException: javax.el.StaticFieldELResolver
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
... 33 common frames omitted
2016-08-03T12:06:31.009 - ;Exception initializing page context; java.lang.NoClassDefFoundError: javax/el/StaticFieldELResolver
 at org.apache.jasper.runtime.JspFactoryImpl.internalGetPageContext(JspFactoryImpl.java:172)
 at org.apache.jasper.runtime.JspFactoryImpl.getPageContext(JspFactoryImpl.java:123)
 at org.apache.jsp.errors._404_002dnot_002dfound_jsp._jspService(_404_002dnot_002dfound_jsp.java:38)
 at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:111)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
 at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:411)
 at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:473)
 at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:377)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
 at collective.config.startup.DamFilter.doFilter(DamFilter.java:270)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
 at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:748)
 at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:488)
 at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:411)
 at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:338)
 at org.apache.catalina.core.StandardHostValve.custom(StandardHostValve.java:476)
 at org.apache.catalina.core.StandardHostValve.status(StandardHostValve.java:345)
 at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:210)
 at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
 at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
 at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:957)
 at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:683)
 at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423)
 at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079)
 at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:620)
 at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
 at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
 at java.lang.Thread.run(Thread.java:744)
Caused by: java.lang.ClassNotFoundException: javax.el.StaticFieldELResolver
 at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720)
 at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
 ... 33 common frames omitted
@version: 1
logger_name: org.apache.jasper.runtime.JspFactoryImpl
thread_name: http-bio-0.0.0.0-8081-exec-198
level: ERROR
customer: foobaz
2016-08-03T12:06:31.009 - ;Exception initializing page context;
@version: 1
logger_name: org.apache.jasper.runtime.JspFactoryImpl
thread_name: http-bio-0.0.0.0-8081-exec-198
level: ERROR
customer: foobaz
 @version: 1
 logger_name: org.apache.jasper.runtime.JspFactoryImpl
 thread_name: http-bio-0.0.0.0-8081-exec-198
 level: ERROR
 customer: foobaz
2016-08-03T12:06:31.009 - ;Exception initializing page context; 
 @version: 1
 logger_name: org.apache.jasper.runtime.JspFactoryImpl
 thread_name: http-bio-0.0.0.0-8081-exec-198
 level: ERROR
 customer: foobaz

View File

@ -1,5 +1,5 @@
192.168.202.254 - - [20/Jul/2009:22:59:26 +0000] "GET /vmw/cgi/tramp HTTP/1.0" 200 134 "-" "gPXE/0.9.7"
Hello, World!
└ #foo
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/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

@ -1,3 +1,3 @@
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/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/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

@ -1,3 +1,3 @@
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/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/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

@ -1,4 +1,4 @@
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/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/vmkboot.gz HTTP/1.0" 404 46210 "-" "gPXE/0.9.7"
Goodbye, World!
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

@ -1,3 +1,3 @@
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/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/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

@ -1,4 +1,4 @@
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/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/vmkboot.gz HTTP/1.0" 404 46210 "-" "gPXE/0.9.7"
└ #foo
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

@ -1,5 +1,5 @@
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/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/vmkboot.gz HTTP/1.0" 404 46210 "-" "gPXE/0.9.7"
Hello, World!
└ #foo
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

@ -1,4 +1,4 @@
192.168.202.254 - - [20/Jul/2009:22:59:26 +0000] "GET /vmw/cgi/tramp HTTP/1.0" 200 134 "-" "gPXE/0.9.7"
└ #foo
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/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

@ -1,4 +1,4 @@
192.168.202.254 - - [20/Jul/2009:22:59:26 +0000] "GET /vmw/cgi/tramp HTTP/1.0" 200 134 "-" "gPXE/0.9.7"
Hello, World!
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/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"