* logrunner.c
* (c) Peter Roozemaal, feb 2003
*
- * $Id: logrunner.cpp,v 1.3 2007-05-06 08:35:16 arjen Exp $
+ * $Id: logrunner.cpp,v 1.4 2007-10-27 08:46:21 arjen Exp $
*
* 1) compile,
* 2) Add 'logfile' elements to the gnucomo configuration file
class LogFile {
String name;
String type;
+ String fromhost;
+
int fd;
ino_t inode;
off_t position;
void copy_data();
public:
- LogFile(String n, String t)
+ LogFile(String n, String t, String fh)
{
name = n;
type = t;
+ fromhost = fh;
inode = 0;
position = 0;
fd = -1;
LogFile(const LogFile &lf)
{
- name = lf.name;
- type = lf.type;
- fd = lf.fd;
- inode = lf.inode;
+ name = lf.name;
+ type = lf.type;
+ fromhost = lf.fromhost;
+
+ fd = lf.fd;
+ inode = lf.inode;
position = lf.position;
filter = lf.filter;
}
String logline(line);
- // Apply filters to this log entry
+ // See if have to select the host and apply filters to this log entry
- std::list<regex>::iterator f = filter.begin();
bool filtered_out = false;
+
+ if (fromhost && (fromhost.in(logline) == -1 || fromhost.in(logline) > 20))
+ {
+ filtered_out = true;
+ }
+
+ std::list<regex>::iterator f = filter.begin();
while (f != filter.end())
{
if (logline == *f)
String logfilename;
String logfiletype;
+ String fromhost;
int l = 0;
{
std::cerr << "Configuration for logfile " << logfilename << "\n";
logfiletype = cfg.find_parameter("logfile", "type", l);
- std::cerr << "LogFile " << logfilename << " of type " << logfiletype << "\n";
+ fromhost = cfg.find_parameter("logfile", "fromhost", l);
+ std::cerr << "LogFile " << logfilename << " of type " << logfiletype << " from host " << fromhost << "\n";
- LogFile lf(logfilename, logfiletype);
+ LogFile lf(logfilename, logfiletype, fromhost);
int f = 0;
String exp = cfg.find_parameter("logfile", "filter", l, f);