+ char buf[4096];
+ va_list ap;
+ va_start(ap, fmt);
+
+ buf[0] = ' ';
+ yaz_vsnprintf(buf + 1, sizeof(buf)-30, fmt, ap);
+
+ std::ostringstream os;
+
+ os << module << " " << *this << buf;
+
+ va_end(ap);
+ yaz_log(level, "%s", os.str().c_str());
+
+ if (p_logger)
+ p_logger->str += std::string(module) + std::string(buf) + std::string("\n");
+}
+
+void mp::Package::log_enable(void)
+{
+ p_logger.reset(new PackageLogger);
+}
+
+void mp::Package::log_write(const char *buf, size_t sz)
+{
+ if (p_logger)
+ p_logger->str += std::string(buf, sz);
+}
+
+void mp::Package::log_reset(std::string &res)
+{
+ if (p_logger)
+ {
+ res = p_logger->str;
+ // p_logger->str.clear();
+ p_logger.reset();
+ }