Convert Figma logo to code with AI

google logoglog

C++ implementation of the Google logging module

7,028
2,057
7,028
43

Top Related Projects

23,832

Fast C++ logging library.

14,146

A fast JSON parser/generator for C++ with both SAX/DOM style API

20,408

A modern formatting library

42,154

JSON for Modern C++

8,063

A C++ library for interacting with JSON.

log4cplus is a simple to use C++ logging API providing thread-safe, flexible, and arbitrarily granular control over log management and configuration. It is modelled after the Java log4j API.

Quick Overview

Google glog is a C++ logging library that implements application-level logging. It provides a simple and efficient way to add logging functionality to C++ applications, offering various severity levels, customizable log formats, and performance optimizations.

Pros

  • Easy to use and integrate into existing C++ projects
  • Supports multiple severity levels (INFO, WARNING, ERROR, FATAL)
  • Offers performance optimizations, such as conditional logging
  • Provides flexible log formatting options

Cons

  • Limited to C++ applications (not suitable for other languages)
  • May have a learning curve for developers unfamiliar with Google's coding style
  • Some users report issues with Windows compatibility
  • Limited built-in log rotation capabilities

Code Examples

  1. Basic logging example:
#include <glog/logging.h>

int main(int argc, char* argv[]) {
    // Initialize Google's logging library.
    google::InitGoogleLogging(argv[0]);

    LOG(INFO) << "Hello, World!";
    LOG(WARNING) << "This is a warning message";
    LOG(ERROR) << "This is an error message";

    return 0;
}
  1. Conditional logging:
#include <glog/logging.h>

void process_data(const std::vector<int>& data) {
    LOG_IF(WARNING, data.empty()) << "Input data is empty";
    
    for (int i = 0; i < data.size(); ++i) {
        LOG_EVERY_N(INFO, 100) << "Processed " << i << " items";
        // Process data...
    }
}
  1. Custom log format:
#include <glog/logging.h>

int main(int argc, char* argv[]) {
    google::InitGoogleLogging(argv[0]);
    
    // Set custom log format
    google::SetLogDestination(google::INFO, "/var/log/myapp_");
    google::SetLogFilenameExtension(".log");
    FLAGS_log_prefix = false;
    FLAGS_colorlogtostderr = true;

    LOG(INFO) << "This log message will use the custom format";

    return 0;
}

Getting Started

To use Google glog in your C++ project:

  1. Install glog using your package manager or build from source.
  2. Include the glog header in your C++ file:
    #include <glog/logging.h>
    
  3. Initialize the library in your main() function:
    google::InitGoogleLogging(argv[0]);
    
  4. Use logging macros throughout your code:
    LOG(INFO) << "Your log message here";
    
  5. Compile your program with the glog library (e.g., -lglog flag).

Remember to check the official documentation for more advanced usage and configuration options.

Competitor Comparisons

23,832

Fast C++ logging library.

Pros of spdlog

  • Faster performance, especially for high-volume logging
  • Header-only library, simplifying integration
  • More flexible formatting options

Cons of spdlog

  • Less mature and battle-tested compared to glog
  • Fewer built-in features for Google-specific infrastructure

Code Comparison

spdlog:

#include "spdlog/spdlog.h"

int main() {
    spdlog::info("Hello, {}!", "World");
    return 0;
}

glog:

#include <glog/logging.h>

int main(int argc, char* argv[]) {
    google::InitGoogleLogging(argv[0]);
    LOG(INFO) << "Hello, World!";
    return 0;
}

Both libraries offer simple ways to log messages, but spdlog provides more modern C++ syntax and formatting options. glog requires initialization and uses a macro-based approach, which some developers may find less intuitive.

spdlog is generally preferred for projects prioritizing performance and ease of integration, while glog may be favored in Google-centric environments or for projects requiring its specific features. The choice between the two often depends on the project's specific needs and the development team's preferences.

14,146

A fast JSON parser/generator for C++ with both SAX/DOM style API

Pros of rapidjson

  • Specialized for JSON parsing and generation, offering high performance
  • Supports in-situ parsing, reducing memory allocation
  • More actively maintained with frequent updates

Cons of rapidjson

  • Limited to JSON processing, less versatile than glog's logging capabilities
  • Steeper learning curve due to more complex API
  • Larger codebase and potential overhead for simple use cases

Code Comparison

glog:

#include <glog/logging.h>

int main(int argc, char* argv[]) {
  google::InitGoogleLogging(argv[0]);
  LOG(INFO) << "Hello, World!";
  return 0;
}

rapidjson:

#include "rapidjson/document.h"
#include "rapidjson/writer.h"
#include "rapidjson/stringbuffer.h"

rapidjson::Document d;
d.Parse("{\"hello\":\"world\"}");
rapidjson::StringBuffer buffer;
rapidjson::Writer<rapidjson::StringBuffer> writer(buffer);
d.Accept(writer);

Summary

While glog focuses on logging functionality, rapidjson specializes in JSON processing. glog offers simpler usage for logging purposes, while rapidjson provides high-performance JSON manipulation at the cost of increased complexity. The choice between them depends on the specific requirements of your project.

20,408

A modern formatting library

Pros of fmt

  • More modern and feature-rich formatting library
  • Faster compilation times and smaller binary sizes
  • Type-safe and extensible for custom types

Cons of fmt

  • Less integrated logging functionality
  • Smaller ecosystem and community compared to glog
  • May require more setup for basic logging use cases

Code Comparison

fmt:

#include <fmt/core.h>

fmt::print("Hello, {}!", "world");
fmt::print("The answer is {}", 42);

glog:

#include <glog/logging.h>

LOG(INFO) << "Hello, world!";
LOG(INFO) << "The answer is " << 42;

Summary

fmt is a modern formatting library that offers superior performance and type safety, while glog is a more established logging framework with better integration for Google-style logging. fmt excels in formatting and string manipulation, whereas glog provides a more comprehensive logging solution out of the box. The choice between the two depends on specific project requirements and preferences for formatting vs. logging functionality.

42,154

JSON for Modern C++

Pros of json

  • Specialized for JSON parsing and manipulation, offering a more comprehensive set of JSON-specific features
  • Header-only library, simplifying integration into projects
  • Extensive documentation and examples for easy adoption

Cons of json

  • Focused solely on JSON, lacking general-purpose logging capabilities
  • May have a steeper learning curve for developers unfamiliar with modern C++ techniques

Code comparison

glog:

#include <glog/logging.h>

int main(int argc, char* argv[]) {
  google::InitGoogleLogging(argv[0]);
  LOG(INFO) << "Hello, World!";
  return 0;
}

json:

#include <nlohmann/json.hpp>

int main() {
  nlohmann::json j = {{"name", "John"}, {"age", 30}};
  std::cout << j.dump(4) << std::endl;
  return 0;
}

Key differences

  • glog is primarily a logging library, while json focuses on JSON manipulation
  • json provides a more intuitive interface for working with JSON data structures
  • glog offers various logging levels and configuration options not present in json
  • json is better suited for projects heavily relying on JSON processing
  • glog is more appropriate for general-purpose logging and debugging needs
8,063

A C++ library for interacting with JSON.

Pros of JsonCpp

  • Specialized for JSON parsing and manipulation
  • Lightweight and easy to integrate into projects
  • Supports both DOM-style and SAX-style parsing

Cons of JsonCpp

  • Limited to JSON processing, not a general-purpose logging library
  • May require additional setup for error handling and logging

Code Comparison

JsonCpp example:

Json::Value root;
Json::Reader reader;
bool parsingSuccessful = reader.parse(jsonString, root);
if (parsingSuccessful) {
    std::string name = root["name"].asString();
}

glog example:

#include <glog/logging.h>

int main(int argc, char* argv[]) {
    google::InitGoogleLogging(argv[0]);
    LOG(INFO) << "Hello, World!";
    return 0;
}

Summary

JsonCpp is a specialized JSON parsing library, while glog is a logging library. JsonCpp offers efficient JSON manipulation but lacks general logging capabilities. glog provides robust logging features but doesn't handle JSON directly. The choice between them depends on the specific needs of your project: JSON processing or comprehensive logging.

log4cplus is a simple to use C++ logging API providing thread-safe, flexible, and arbitrarily granular control over log management and configuration. It is modelled after the Java log4j API.

Pros of log4cplus

  • More flexible configuration options, including runtime reconfiguration
  • Supports a wider range of output destinations (appenders)
  • Better cross-platform support, including Windows

Cons of log4cplus

  • Steeper learning curve due to more complex API
  • Larger footprint and potentially slower performance
  • Less active development and community support

Code Comparison

log4cplus:

#include <log4cplus/logger.h>
#include <log4cplus/loggingmacros.h>

int main() {
    log4cplus::Logger logger = log4cplus::Logger::getInstance(LOG4CPLUS_TEXT("main"));
    LOG4CPLUS_INFO(logger, "Hello, World!");
    return 0;
}

glog:

#include <glog/logging.h>

int main(int argc, char* argv[]) {
    google::InitGoogleLogging(argv[0]);
    LOG(INFO) << "Hello, World!";
    return 0;
}

Both libraries provide similar basic functionality for logging, but log4cplus offers more advanced features at the cost of complexity. glog is simpler to use and integrate, making it a good choice for projects that don't require extensive logging customization. log4cplus might be preferred for larger projects or those needing fine-grained control over logging behavior across different platforms.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

Google Logging Library

|Linux Github actions| |Windows Github actions| |macOS Github actions| |Codecov|

Google Logging (glog) is a C++14 library that implements application-level logging. The library provides logging APIs based on C++-style streams and various helper macros.

Getting Started

Please refer to project's documentation <https://google.github.io/glog/>_.

.. |Linux Github actions| image:: https://github.com/google/glog/actions/workflows/linux.yml/badge.svg :target: https://github.com/google/glog/actions .. |Windows Github actions| image:: https://github.com/google/glog/actions/workflows/windows.yml/badge.svg :target: https://github.com/google/glog/actions .. |macOS Github actions| image:: https://github.com/google/glog/actions/workflows/macos.yml/badge.svg :target: https://github.com/google/glog/actions .. |Codecov| image:: https://codecov.io/gh/google/glog/branch/master/graph/badge.svg?token=8an420vNju :target: https://codecov.io/gh/google/glog