|
49 | 49 | #include "pb_preferred_memory.h" |
50 | 50 | #include "pb_response_iterator.h" |
51 | 51 | #include "pb_string.h" |
| 52 | +#include "pb_stub_log.h" |
52 | 53 | #include "pb_utils.h" |
53 | 54 | #include "response_sender.h" |
54 | 55 | #include "scoped_defer.h" |
@@ -1569,138 +1570,6 @@ Stub::ProcessBLSResponseDecoupled(std::unique_ptr<IPCMessage>& ipc_message) |
1569 | 1570 | } |
1570 | 1571 | } |
1571 | 1572 |
|
1572 | | -std::unique_ptr<Logger> Logger::log_instance_; |
1573 | | - |
1574 | | -std::unique_ptr<Logger>& |
1575 | | -Logger::GetOrCreateInstance() |
1576 | | -{ |
1577 | | - if (Logger::log_instance_.get() == nullptr) { |
1578 | | - Logger::log_instance_ = std::make_unique<Logger>(); |
1579 | | - } |
1580 | | - |
1581 | | - return Logger::log_instance_; |
1582 | | -} |
1583 | | - |
1584 | | -// Bound function, called from the python client |
1585 | | -void |
1586 | | -Logger::Log(const std::string& message, LogLevel level) |
1587 | | -{ |
1588 | | - std::unique_ptr<Stub>& stub = Stub::GetOrCreateInstance(); |
1589 | | - py::object frame = py::module_::import("inspect").attr("currentframe"); |
1590 | | - py::object caller_frame = frame(); |
1591 | | - py::object info = py::module_::import("inspect").attr("getframeinfo"); |
1592 | | - py::object caller_info = info(caller_frame); |
1593 | | - py::object filename_python = caller_info.attr("filename"); |
1594 | | - std::string filename = filename_python.cast<std::string>(); |
1595 | | - py::object lineno = caller_info.attr("lineno"); |
1596 | | - uint32_t line = lineno.cast<uint32_t>(); |
1597 | | - |
1598 | | - if (!stub->StubToParentServiceActive()) { |
1599 | | - Logger::GetOrCreateInstance()->Log(filename, line, level, message); |
1600 | | - } else { |
1601 | | - std::unique_ptr<PbLog> log_msg(new PbLog(filename, line, message, level)); |
1602 | | - stub->EnqueueLogRequest(log_msg); |
1603 | | - } |
1604 | | -} |
1605 | | - |
1606 | | -// Called internally (.e.g. LOG_ERROR << "Error"; ) |
1607 | | -void |
1608 | | -Logger::Log( |
1609 | | - const std::string& filename, uint32_t lineno, LogLevel level, |
1610 | | - const std::string& message) |
1611 | | -{ |
1612 | | - // If the log monitor service is not active yet, format |
1613 | | - // and pass messages to cerr |
1614 | | - if (!BackendLoggingActive()) { |
1615 | | - std::string path(filename); |
1616 | | - size_t pos = path.rfind(std::filesystem::path::preferred_separator); |
1617 | | - if (pos != std::string::npos) { |
1618 | | - path = path.substr(pos + 1, std::string::npos); |
1619 | | - } |
1620 | | -#ifdef _WIN32 |
1621 | | - std::stringstream ss; |
1622 | | - SYSTEMTIME system_time; |
1623 | | - GetSystemTime(&system_time); |
1624 | | - ss << LeadingLogChar(level) << std::setfill('0') << std::setw(2) |
1625 | | - << system_time.wMonth << std::setw(2) << system_time.wDay << ' ' |
1626 | | - << std::setw(2) << system_time.wHour << ':' << std::setw(2) |
1627 | | - << system_time.wMinute << ':' << std::setw(2) << system_time.wSecond |
1628 | | - << '.' << std::setw(6) << system_time.wMilliseconds * 1000 << ' ' |
1629 | | - << static_cast<uint32_t>(GetCurrentProcessId()) << ' ' << path << ':' |
1630 | | - << lineno << "] "; |
1631 | | -#else |
1632 | | - std::stringstream ss; |
1633 | | - struct timeval tv; |
1634 | | - gettimeofday(&tv, NULL); |
1635 | | - struct tm tm_time; |
1636 | | - gmtime_r(((time_t*)&(tv.tv_sec)), &tm_time); |
1637 | | - ss << LeadingLogChar(level) << std::setfill('0') << std::setw(2) |
1638 | | - << (tm_time.tm_mon + 1) << std::setw(2) << tm_time.tm_mday << " " |
1639 | | - << std::setw(2) << tm_time.tm_hour << ':' << std::setw(2) |
1640 | | - << tm_time.tm_min << ':' << std::setw(2) << tm_time.tm_sec << "." |
1641 | | - << std::setw(6) << tv.tv_usec << ' ' << static_cast<uint32_t>(getpid()) |
1642 | | - << ' ' << path << ':' << lineno << "] "; |
1643 | | - std::cerr << ss.str() << " " << message << std::endl; |
1644 | | -#endif |
1645 | | - } else { |
1646 | | - // Ensure we do not create a stub instance before it has initialized |
1647 | | - std::unique_ptr<Stub>& stub = Stub::GetOrCreateInstance(); |
1648 | | - std::unique_ptr<PbLog> log_msg(new PbLog(filename, lineno, message, level)); |
1649 | | - stub->EnqueueLogRequest(log_msg); |
1650 | | - } |
1651 | | -} |
1652 | | - |
1653 | | -void |
1654 | | -Logger::LogInfo(const std::string& message) |
1655 | | -{ |
1656 | | - Logger::Log(message, LogLevel::kInfo); |
1657 | | -} |
1658 | | - |
1659 | | -void |
1660 | | -Logger::LogWarn(const std::string& message) |
1661 | | -{ |
1662 | | - Logger::Log(message, LogLevel::kWarning); |
1663 | | -} |
1664 | | - |
1665 | | -void |
1666 | | -Logger::LogError(const std::string& message) |
1667 | | -{ |
1668 | | - Logger::Log(message, LogLevel::kError); |
1669 | | -} |
1670 | | - |
1671 | | -void |
1672 | | -Logger::LogVerbose(const std::string& message) |
1673 | | -{ |
1674 | | - Logger::Log(message, LogLevel::kVerbose); |
1675 | | -} |
1676 | | - |
1677 | | -const std::string |
1678 | | -Logger::LeadingLogChar(const LogLevel& level) |
1679 | | -{ |
1680 | | - switch (level) { |
1681 | | - case LogLevel::kWarning: |
1682 | | - return "W"; |
1683 | | - case LogLevel::kError: |
1684 | | - return "E"; |
1685 | | - case LogLevel::kInfo: |
1686 | | - case LogLevel::kVerbose: |
1687 | | - default: |
1688 | | - return "I"; |
1689 | | - } |
1690 | | -} |
1691 | | - |
1692 | | -void |
1693 | | -Logger::SetBackendLoggingActive(bool status) |
1694 | | -{ |
1695 | | - backend_logging_active_ = status; |
1696 | | -} |
1697 | | - |
1698 | | -bool |
1699 | | -Logger::BackendLoggingActive() |
1700 | | -{ |
1701 | | - return backend_logging_active_; |
1702 | | -} |
1703 | | - |
1704 | 1573 | PYBIND11_EMBEDDED_MODULE(c_python_backend_utils, module) |
1705 | 1574 | { |
1706 | 1575 | py::class_<PbError, std::shared_ptr<PbError>> triton_error( |
|
0 commit comments