Hi Dave,
I found that - while fetching and displaying the log, we are assuming that -
all the columns will present at that point of time. (i.e. TimeStamp, Log
Level, Log Entry).
But, it may present or not.
i.e. If we do not have log_prefix_line does not contain '%t', than TimeStamp
column will not be present.
The following code suggests the same:
*void frmStatus::AddLogPane()*
*{*
* ...*
* else // Non-GPDB or non-CSV format log*
* {*
* if (logHasTimestamp)*
* logList->AddColumn(_("Timestamp"), 100);*
*
*
* if (logFormatKnown)*
* logList->AddColumn(_("Level"), 35);*
*
*
* logList->AddColumn(_("Log entry"), 800);*
* }*
* ...*
*}*
So, we need to put the parsed logs in particular column based on these
boolean values.
And, this was causing assert on linux and core dump on Solaris 10 sparc
machine.
Please find patches for the REL-1_10_PATCHES and REL-1_12_PATCHES.
*--**
**Thanks & Regards,**
**Ashesh Vashi**
**EnterpriseDB INDIA:* Enterprise Postgres Company<http://www.enterprisedb.com>
diff --git a/pgadmin/frm/frmStatus.cpp b/pgadmin/frm/frmStatus.cpp
index e26cc3e..3fe54ac 100644
--- a/pgadmin/frm/frmStatus.cpp
+++ b/pgadmin/frm/frmStatus.cpp
@@ -1685,20 +1685,45 @@ void frmStatus::addLogLine(const wxString &str, bool formatted, bool csv_log_for
{
int row=logList->GetItemCount();
+ int idxTimeStampCol = -1, idxLevelCol = -1;
+ int idxLogEntryCol = 0;
+
+ if (logFormatKnown)
+ {
+ // Known Format first will be level, then Log entry
+ // idxLevelCol : 0, idxLogEntryCol : 1, idxTimeStampCol : -1
+ idxLevelCol++;
+ idxLogEntryCol++;
+ if (logHasTimestamp)
+ {
+ // idxLevelCol : 1, idxLogEntryCol : 2, idxTimeStampCol : 0
+ idxTimeStampCol++;
+ idxLevelCol++;
+ idxLogEntryCol++;
+ }
+ }
+
if (!logFormatKnown)
logList->AppendItem(-1, str);
else if ((!csv_log_format) && str.Find(':') < 0)
{
// Must be a continuation of a previous line.
logList->InsertItem(row, wxEmptyString, -1);
- logList->SetItem(row, 2, str);
+ logList->SetItem(row, idxLogEntryCol, str);
}
else if (!formatted)
{
// Not from a log, from pgAdmin itself.
- logList->InsertItem(row, wxEmptyString, -1);
- logList->SetItem(row, 1, str.BeforeFirst(':'));
- logList->SetItem(row, 2, str.AfterFirst(':'));
+ if (logHasTimestamp)
+ {
+ logList->InsertItem(row, wxEmptyString, -1);
+ logList->SetItem(row, idxLevelCol, str.BeforeFirst(':'));
+ }
+ else
+ {
+ logList->InsertItem(row, str.BeforeFirst(':'), -1);
+ }
+ logList->SetItem(row, idxLogEntryCol, str.AfterFirst(':'));
}
else // formatted log
{
@@ -1943,14 +1968,14 @@ void frmStatus::addLogLine(const wxString &str, bool formatted, bool csv_log_for
int pos = ts.Find(logFormat.c_str()[logFmtPos+2], true);
logList->InsertItem(row, ts.Left(pos), -1);
- logList->SetItem(row, 1, ts.Mid(pos + logFormat.Length() - logFmtPos -2));
- logList->SetItem(row, 2, rest.Mid(2));
+ logList->SetItem(row, idxLevelCol, ts.Mid(pos + logFormat.Length() - logFmtPos -2));
+ logList->SetItem(row, idxLogEntryCol, rest.Mid(2));
}
else
{
logList->InsertItem(row, wxEmptyString, -1);
- logList->SetItem(row, 1, str.BeforeFirst(':'));
- logList->SetItem(row, 2, str.AfterFirst(':').Mid(2));
+ logList->SetItem(row, idxLevelCol, str.BeforeFirst(':'));
+ logList->SetItem(row, idxLogEntryCol, str.AfterFirst(':').Mid(2));
}
}
else
@@ -1967,7 +1992,7 @@ void frmStatus::addLogLine(const wxString &str, bool formatted, bool csv_log_for
else
{
logList->InsertItem(row, rest.BeforeFirst(':'), -1);
- logList->SetItem(row, 1, rest.AfterFirst(':').Mid(2));
+ logList->SetItem(row, idxLogEntryCol, rest.AfterFirst(':').Mid(2));
}
}
}
diff --git a/pgadmin/frm/frmStatus.cpp b/pgadmin/frm/frmStatus.cpp
index ed1602e..aabef42 100644
--- a/pgadmin/frm/frmStatus.cpp
+++ b/pgadmin/frm/frmStatus.cpp
@@ -1824,20 +1824,45 @@ void frmStatus::addLogLine(const wxString &str, bool formatted, bool csv_log_for
{
int row=logList->GetItemCount();
+ int idxTimeStampCol = -1, idxLevelCol = -1;
+ int idxLogEntryCol = 0;
+
+ if (logFormatKnown)
+ {
+ // Known Format first will be level, then Log entry
+ // idxLevelCol : 0, idxLogEntryCol : 1, idxTimeStampCol : -1
+ idxLevelCol++;
+ idxLogEntryCol++;
+ if (logHasTimestamp)
+ {
+ // idxLevelCol : 1, idxLogEntryCol : 2, idxTimeStampCol : 0
+ idxTimeStampCol++;
+ idxLevelCol++;
+ idxLogEntryCol++;
+ }
+ }
+
if (!logFormatKnown)
logList->AppendItem(-1, str);
else if ((!csv_log_format) && str.Find(':') < 0)
{
// Must be a continuation of a previous line.
logList->InsertItem(row, wxEmptyString, -1);
- logList->SetItem(row, 2, str);
+ logList->SetItem(row, idxLogEntryCol, str);
}
else if (!formatted)
{
// Not from a log, from pgAdmin itself.
- logList->InsertItem(row, wxEmptyString, -1);
- logList->SetItem(row, 1, str.BeforeFirst(':'));
- logList->SetItem(row, 2, str.AfterFirst(':'));
+ if (logHasTimestamp)
+ {
+ logList->InsertItem(row, wxEmptyString, -1);
+ logList->SetItem(row, idxLevelCol, str.BeforeFirst(':'));
+ }
+ else
+ {
+ logList->InsertItem(row, str.BeforeFirst(':'), -1);
+ }
+ logList->SetItem(row, idxLogEntryCol, str.AfterFirst(':'));
}
else // formatted log
{
@@ -2082,14 +2107,14 @@ void frmStatus::addLogLine(const wxString &str, bool formatted, bool csv_log_for
int pos = ts.Find(logFormat.c_str()[logFmtPos+2], true);
logList->InsertItem(row, ts.Left(pos), -1);
- logList->SetItem(row, 1, ts.Mid(pos + logFormat.Length() - logFmtPos -2));
- logList->SetItem(row, 2, rest.Mid(2));
+ logList->SetItem(row, idxLevelCol, ts.Mid(pos + logFormat.Length() - logFmtPos -2));
+ logList->SetItem(row, idxLogEntryCol, rest.Mid(2));
}
else
{
logList->InsertItem(row, wxEmptyString, -1);
- logList->SetItem(row, 1, str.BeforeFirst(':'));
- logList->SetItem(row, 2, str.AfterFirst(':').Mid(2));
+ logList->SetItem(row, idxLevelCol, str.BeforeFirst(':'));
+ logList->SetItem(row, idxLogEntryCol, str.AfterFirst(':').Mid(2));
}
}
else
@@ -2106,7 +2131,7 @@ void frmStatus::addLogLine(const wxString &str, bool formatted, bool csv_log_for
else
{
logList->InsertItem(row, rest.BeforeFirst(':'), -1);
- logList->SetItem(row, 1, rest.AfterFirst(':').Mid(2));
+ logList->SetItem(row, idxLogEntryCol, rest.AfterFirst(':').Mid(2));
}
}
}
--
Sent via pgadmin-hackers mailing list ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgadmin-hackers