This is to facilitate some kind of consistency for log messages. The
zoom filter uses it. For example x-session-id stuff is included.
- std::ostream& operator<<(std::ostream& os, metaproxy_1::Origin& o);
+ std::ostream& operator<<(std::ostream& os, const metaproxy_1::Origin& o);
}
namespace metaproxy_1 {
}
namespace metaproxy_1 {
void set_custom_session(const std::string &s);
private:
friend std::ostream&
void set_custom_session(const std::string &s);
private:
friend std::ostream&
- std::operator<<(std::ostream& os, metaproxy_1::Origin& o);
+ std::operator<<(std::ostream& os, const metaproxy_1::Origin& o);
- std::ostream& operator<<(std::ostream& os, metaproxy_1::Package& p);
+ std::ostream& operator<<(std::ostream& os, const metaproxy_1::Package& p);
}
namespace metaproxy_1 {
}
namespace metaproxy_1 {
/// get function - right val in assignment
Session session() const;
/// get function - right val in assignment
Session session() const;
+
+ void log(const char *module, int level, const char *fmt, ...) const;
private:
Session m_session;
Origin m_origin;
private:
Session m_session;
Origin m_origin;
void handle_package(mp::Package &package);
void handle_search(mp::Package &package);
void handle_present(mp::Package &package);
void handle_package(mp::Package &package);
void handle_search(mp::Package &package);
void handle_present(mp::Package &package);
- BackendPtr get_backend_from_databases(std::string &database,
+ BackendPtr get_backend_from_databases(const mp::Package &package,
+ std::string &database,
int *error,
char **addinfo,
ODR odr);
int *error,
char **addinfo,
ODR odr);
}
yf::Zoom::BackendPtr yf::Zoom::Frontend::get_backend_from_databases(
}
yf::Zoom::BackendPtr yf::Zoom::Frontend::get_backend_from_databases(
+ const mp::Package &package,
std::string &database, int *error, char **addinfo, ODR odr)
{
std::list<BackendPtr>::const_iterator map_it;
std::string &database, int *error, char **addinfo, ODR odr)
{
std::list<BackendPtr>::const_iterator map_it;
FILE *file = fopen(fname, "w");
if (!file)
{
FILE *file = fopen(fname, "w");
if (!file)
{
- yaz_log(YLOG_WARN|YLOG_ERRNO, "create %s", fname);
+ package.log("zoom", YLOG_WARN|YLOG_ERRNO, "create %s", fname);
*error = YAZ_BIB1_TEMPORARY_SYSTEM_ERROR;
*addinfo = (char *) odr_malloc(odr, 40 + strlen(fname));
sprintf(*addinfo, "Could not create %s", fname);
*error = YAZ_BIB1_TEMPORARY_SYSTEM_ERROR;
*addinfo = (char *) odr_malloc(odr, 40 + strlen(fname));
sprintf(*addinfo, "Could not create %s", fname);
fwrite(wrbuf_buf(w), 1, wrbuf_len(w), file);
fclose(file);
fwrite(wrbuf_buf(w), 1, wrbuf_len(w), file);
fclose(file);
- yaz_log(YLOG_LOG, "file %s created\n", fname);
+ package.log("zoom", YLOG_LOG, "file %s created\n", fname);
}
if (db_args.length())
url += "," + db_args;
}
if (db_args.length())
url += "," + db_args;
- yaz_log(YLOG_LOG, "url=%s", url.c_str());
+ package.log("zoom", YLOG_LOG, "url=%s", url.c_str());
b->connect(url, error, addinfo, odr);
if (*error == 0)
{
b->connect(url, error, addinfo, odr);
if (*error == 0)
{
int error = 0;
char *addinfo = 0;
std::string db(sr->databaseNames[0]);
int error = 0;
char *addinfo = 0;
std::string db(sr->databaseNames[0]);
- BackendPtr b = get_backend_from_databases(db, &error, &addinfo, odr);
+ BackendPtr b = get_backend_from_databases(package, db, &error,
+ &addinfo, odr);
assert(pqf_wrbuf == 0);
int cerror, cpos;
struct ccl_rpn_node *cn;
assert(pqf_wrbuf == 0);
int cerror, cpos;
struct ccl_rpn_node *cn;
- yaz_log(YLOG_LOG, "CCL: %s", wrbuf_cstr(ccl_wrbuf));
+ package.log("zoom", YLOG_LOG, "CCL: %s", wrbuf_cstr(ccl_wrbuf));
cn = ccl_find_str(b->sptr->ccl_bibset, wrbuf_cstr(ccl_wrbuf),
&cerror, &cpos);
wrbuf_destroy(ccl_wrbuf);
cn = ccl_find_str(b->sptr->ccl_bibset, wrbuf_cstr(ccl_wrbuf),
&cerror, &cpos);
wrbuf_destroy(ccl_wrbuf);
}
pqf_wrbuf = wrbuf_alloc();
ccl_pquery(pqf_wrbuf, cn);
}
pqf_wrbuf = wrbuf_alloc();
ccl_pquery(pqf_wrbuf, cn);
- yaz_log(YLOG_LOG, "RPN: %s", wrbuf_cstr(pqf_wrbuf));
+ package.log("zoom", YLOG_LOG, "RPN: %s", wrbuf_cstr(pqf_wrbuf));
if (status == 0)
{
ZOOM_query_cql(q, wrbuf_cstr(wrb));
if (status == 0)
{
ZOOM_query_cql(q, wrbuf_cstr(wrb));
- yaz_log(YLOG_LOG, "CQL: %s", wrbuf_cstr(wrb));
+ package.log("zoom", YLOG_LOG, "CQL: %s", wrbuf_cstr(wrb));
b->search(q, &hits, &error, &addinfo, odr);
}
ZOOM_query_destroy(q);
b->search(q, &hits, &error, &addinfo, odr);
}
ZOOM_query_destroy(q);
else
{
ZOOM_query_prefix(q, wrbuf_cstr(pqf_wrbuf));
else
{
ZOOM_query_prefix(q, wrbuf_cstr(pqf_wrbuf));
- yaz_log(YLOG_LOG, "search PQF: %s", wrbuf_cstr(pqf_wrbuf));
+ package.log("zoom", YLOG_LOG, "search PQF: %s", wrbuf_cstr(pqf_wrbuf));
b->search(q, &hits, &error, &addinfo, odr);
ZOOM_query_destroy(q);
wrbuf_destroy(pqf_wrbuf);
b->search(q, &hits, &error, &addinfo, odr);
ZOOM_query_destroy(q);
wrbuf_destroy(pqf_wrbuf);
-std::ostream& std::operator<<(std::ostream& os, mp::Origin& o)
+std::ostream& std::operator<<(std::ostream& os, const mp::Origin& o)
{
if (o.m_address.length())
os << o.m_address;
{
if (o.m_address.length())
os << o.m_address;
#include "config.hpp"
#include <metaproxy/package.hpp>
#include "config.hpp"
#include <metaproxy/package.hpp>
+#include <yaz/snprintf.h>
+#include <yaz/log.h>
-std::ostream& std::operator<<(std::ostream& os, mp::Package& p)
+std::ostream& std::operator<<(std::ostream& os, const mp::Package& p)
{
os << p.origin() << " ";
os << p.session().id();
return os;
}
{
os << p.origin() << " ";
os << p.session().id();
return os;
}
+void mp::Package::log(const char *module, int level, const char *fmt, ...) const
+{
+ char buf[4096];
+ va_list ap;
+ va_start(ap, fmt);
+
+ yaz_vsnprintf(buf, sizeof(buf)-30, fmt, ap);
+
+ std::ostringstream os;
+
+ os << module << " " << *this << " " << buf;
+
+ va_end(ap);
+ yaz_log(level, "%s", os.str().c_str());
+}
/*
* Local variables:
* c-basic-offset: 4
/*
* Local variables:
* c-basic-offset: 4