Logging

Introduction to Logfmt

The article explores Logfmt's structure and syntax, and compares it with JSON logging to determine what structured format is right for you

Logfmt
Logging
Guides · Better Stack ·  Updated on December 19, 2023

Logging vs Error Tracking: Two Sides of the Same Coin?

Learn the key differences between the logging and error tracking, and how each one contributes to a comprehensive monitoring strategy

Error Tracking
Logging
Observability
Guides · Better Stack ·  Updated on May 28, 2024

How To Use Logging In Multiple Modules?

It's recommended to have a logger defined in each module like this: import logging logger = logging.getLogger(name) Then in your main program, do the following: import logging.config logging.config...

Logging
Python
Questions · Better Stack ·  Updated on October 5, 2023

How To Color Python Logging Output?

If you are new to logging in Python, please feel free to start with our Introduction to Python logging to get started smoothly. Otherwise, here is how to color python logging output: 🔭 Want to cent...

Logging
Python
Questions · Better Stack ·  Updated on October 5, 2023

Logging in Java: A Comparison of the Top 5 Libraries

This article compares 5 Java logging libraries, discussing and comparing their features, performance, pros and cons, to determine which library is right for you

Java
Log4j
Logback
Logging
TinyLog
Guides · Better Stack ·  Updated on November 29, 2023

How To Disable Logging From The Python Request Library?

You can change the log level of the logger taking care of these messages. Setting the level to WARNING will remove the request messages and keep warnings and errors: import logging logging.getLogge...

Logging
Python
Questions · Better Stack ·  Updated on October 6, 2023

How to Rotate Log Files in Fluentd?

Fluentd offers the capability to set up log rotation, particularly useful when managing large volumes of logs that consume significant disk space. This feature can be configured through Fluentd's s...

Fluentd
Logging
Questions · Better Stack ·  Updated on February 5, 2024

A Comprehensive Guide to Python Logging with Structlog

Learn how to install, configure, and use the Struclog framework for logging in Python applications

Logging
Python
Structlog
Guides · Better Stack ·  Updated on November 30, 2023

AWS Monitoring Tools: Top 14 Picks for 2024

Learn about the best AWS monitoring tools for 2024. Compare features, pros and cons, and choose the right tool for your needs.

AWS
Observability
Monitoring
Logging
Comparisons · Better Stack ·  Updated on January 11, 2024

A Complete Guide to Logging in Go with Zerolog

Zerolog is a high-performance Go structured logging library aimed at latency-sensitive applications where garbage collections are undesirable

Go
Logging
Zerolog
Guides · Better Stack ·  Updated on December 28, 2023

Scaling Elastic Stack

Learn different techniques and settings to get the most out of your Elastic Stack setup in production

Beats
Elasticsearch
Elastic Stack
ELK
Kibana
Logging
Logstash
Guides · Better Stack ·  Updated on December 6, 2023

6 Open Source Log Management Tools for 2024

This article discusss six open-source log management tools that offer flexible and cost-effective solutions for effectively managing log data in production

Logging
Log Management
Open Source
Comparisons · Better Stack ·  Updated on January 12, 2024

How to Use Conditional Statements In Fluentd

Conditional statements can be seamlessly integrated into Fluentd's record_transformer plugin. Here’s how you can do it: <filter mylogs> @type recordtransformer enableruby true <record> is...

Fluentd
Logging
Questions · Better Stack ·  Updated on February 5, 2024

How To Log Uncaught Exceptions In Python?

For this, you can use the sys.excepthook that allows us to attach a handler for any unhandled exception: Creating a logger logger = logging.getLogger(name) logging.basicConfig(filename='example.log...

Logging
Python
Questions · Better Stack ·  Updated on February 3, 2023

7 Steps to Reducing Your Logging Costs

In modern application environments, the sheer volume of log data being generated can make indexing all of it a costly endeavor. To avoid exorbitant logging costs, you need to balance the risks of d...

Best Practices
Logging
Guides · Better Stack ·  Updated on January 15, 2024

Where does Linux store my syslog?

Linux has a special directory for storing logs. This directory contains collected logs from the operating system itself, services and other applications running on the system. The actual location d...

Linux
Logging
Questions · Better Stack ·  Updated on October 11, 2023

How to exclude pattern in <match> for fluentd config?

To selectively filter log events in Fluentd, you can use the <match> directive to specify which events to process and which to discard. Here's how you can do it: To discard all events that match a ...

Fluentd
Logging
Questions · Better Stack ·  Updated on February 5, 2024

How to Get Started with Logging in Node.js

Learn how to start logging with Node.js and go from basics to best practices in no time.

Node.js
Logging
Guides · Better Stack ·  Updated on October 25, 2023

How to Add Tags to Fluentd Events

Here is how you can add tags to Fluentd events. Let's assume you configured Fluentd to process Nginx access logs from the access.log file with a source configuration like this: <source> @type ta...

Fluentd
Logging
Questions · Better Stack ·  Updated on February 5, 2024

Logging in .NET: A Comparison of the Top 4 Libraries

This article compares four .NET logging libraries, delving into their features, performance, pros, and cons.

Log4NET
Logging
.NET
NLog
Serilog
Guides · Better Stack ·  Updated on June 3, 2024

How to Control and Manage Systemd Services with Systemctl

Learn how to control and manage systemd services with systemctl

Linux
Logging
Ubuntu
Guides · Better Stack ·  Updated on January 2, 2024

How to Get Started with Monolog Logging in PHP

Monolog is among the most popular pieces of open source software, providing logging capabilities for PHP applications.

Logging
Monolog
PHP
Guides · Better Stack ·  Updated on November 23, 2023

A Complete Guide to Managing Log Files with Logrotate

Learn how to use the Logrotate utility to set up automatic rotation, compression and deletion of log files in Linux

Linux
Logging
Logrotate
Guides · Better Stack ·  Updated on May 4, 2023

How To Disable Logging While Running Django Unit Tests?

By Disabling Tests At The Start Of The Application Suppose you want to do it the quick way. In that case, the following line of code will disable any log messages less severe or equal to CRITICAL: ...

Logging
Python
Questions · Better Stack ·  Updated on December 13, 2022

A Comprehensive Guide to Zap Logging in Go

This tutorial will guide you through creating a production-ready logging system for your Go applications using Zap logger

Go
Logging
Zap
Guides · Better Stack ·  Updated on December 19, 2023

How To View And Analyze Logs With Windows Event Viewer

Learn how to view and analyze logs with the Windows event viewer.

Logging
Windows
Guides · Better Stack ·  Updated on November 23, 2023

How to Collect, Process, and Ship Log Data with Vector

Learn how to use Vector to collect, process, and ship log data at scale, and improve your observability and troubleshooting capabilities

Logging
Log Shippers
Vector
Guides · Better Stack ·  Updated on January 9, 2024

Logging in Node.js: A Comparison of the Top 8 Libraries

This article compares the top 8 Node.js logging libraries, discussing their features, pros and cons, and providing recommendations for which library is right for you

Logging
Node.js
Pino
Winston
Guides · Better Stack ·  Updated on October 13, 2023

How to Collect, Process, and Ship Log Data with Filebeat

Learn how to use Filebeat to collect, process, and ship log data at scale, and improve your observability and troubleshooting capabilities

Filebeat
Logging
Log Shippers
Guides · Better Stack ·  Updated on November 23, 2023

How to Get Started with Logging in Ruby

Learn how to start logging with Ruby and go from basics to best practices in no time.

Logging
Ruby
Guides · Better Stack ·  Updated on November 23, 2023

How to Get Started with Log4j for Logging in Java

This article aims to help you set up a production-ready logging system for your Java application using Log4j.

Java
Log4j
Logging
Guides · Better Stack ·  Updated on November 23, 2023

A Guide to Java Logging with Logback

This article aims to help you set up a production-ready logging system for your Java application using Logback

Java
Logback
Logging
Guides · Better Stack ·  Updated on November 23, 2023

How to Get Started with Logging in Laravel

Laravel's logging facilities provide a thin layer on top of the Monolog library, which provides logging capabilities for PHP applications

Laravel
Logging
PHP
Guides · Better Stack ·  Updated on November 23, 2023

How To Log All Requests From The Python Request Library?

If you are new to logging in Python, please feel free to start with our Introduction to Python logging to get started smoothly. Otherwise, here is how to log all requests from the python request li...

Logging
Python
Questions · Better Stack ·  Updated on October 6, 2023

How To Start Logging With Log4net

Learn how to start logging with Log4NET and go from basics to best practices in no time.

Log4NET
Logging
.NET
Guides · Better Stack ·  Updated on November 23, 2023

A Complete Guide to Logging in Heroku

Learn how to start logging in Heroku and go from basics to best practices in no time.

Heroku
Logging
Guides · Better Stack ·  Updated on December 19, 2023

How to access Redis log file?

As many other services, Redis stores its log in the special log file. The location of the Redis log depends on the type of the installation. With a default apt-get installation on Ubuntu 14.04, Red...

Logging
Questions · Better Stack ·  Updated on October 11, 2023

How to Collect, Process, and Ship Log Data with Fluent Bit

Learn how to use Fluent Bit to simplify the collection, processing, and shipping of log data at scale, enhancing observability and troubleshooting capabilities

FluentBit
Logging
Log Shippers
Guides · Better Stack ·  Updated on January 9, 2024

Logging vs Metrics vs Tracing: What's the Difference?

Learn how logs, metrics, and traces each contribute to system observability to facilitate deeper analysis and end-to-end request tracking to pinpoint and resolve failures.

Logging
Metrics
Monitoring
Observability
Tracing
Guides · Better Stack ·  Updated on March 27, 2024

11 Best Practices for Logging in Node.js

If you want to improve visibility into your Node.js application, the best place to start is by implementing logging best practices.

Node.js
Winston
Pino
Logging
Best Practices
Guides · Better Stack ·  Updated on October 25, 2023

8 Factors for Choosing a Logging Framework

Choosing the right logging framework for your application is crucial in establishing standardized logging practices. This article lists some key factors to consider before choosing a framework for logging

Best Practices
Logging
Guides · Better Stack ·  Updated on January 9, 2024

What is Log Visualization? Getting Started and Best Practices

Learn how visualizing your log data can help reveal the true potential of your logs and help you faster and more-informed decisions about your software

Grafana
Kibana
Logging
Log visualization
Guides · Better Stack ·  Updated on December 20, 2023

A Beginner's Guide to JSON Logging

This comprehensive guide covers JSON logging: benefits, implementation, and best practices for maximizing your log data's value.

Best Practices
JSON Logging
Logging
Guides · Better Stack ·  Updated on May 7, 2024

Contextual Logging in Go with Slog

Learn how to implement contextual logging in your Go applications using log/slog and the context package

Go
Logging
Guides · Better Stack ·  Updated on August 29, 2024

How to Start Logging with Postfix

Learn how to start logging with Postfix and go from basics to best practices in no time.

Logging
Postfix
Guides · Better Stack ·  Updated on November 23, 2023

How to View and Configure Linux System Logs on Ubuntu 20.04

Learn how to view and configure linux system logs on ubuntu 20.04

Linux
Logging
Ubuntu
Guides · Better Stack ·  Updated on March 15, 2023

Log Levels Explained and How to Use Them

Log levels are labels that indicate the severity or urgency of a log entry. This article will help you understand why they are crucial for effective log management

Best Practices
Logging
Guides · Better Stack ·  Updated on January 29, 2024

Google Cloud Platform Logging with a Practical Example

In this article, we will cover the basics of logging on Google Cloud Platform, including setting up log collection, sending logs to different destinations, and creating alerts. Get started with logging on GCP today and ensure the smooth running of your infrastructure

GCP
Logging
Guides · Better Stack ·  Updated on November 23, 2023

How to log data as JSON with Python

How to Log Data As JSON With Python? The simplest way is to use a custom module.

Logging
Python
Questions · Better Stack ·  Updated on February 3, 2023

PostgreSQL Logging: Everything You Need to Know

PostgreSQL server logs can be a gold-mine of information when appropriately configured. This article will put you on the right path towards getting it right

Logging
PostgreSQL
Guides · Better Stack ·  Updated on June 18, 2024

How to Set Up Centralized Logging on Linux with Rsyslog

Learn how to set up a centralized logging on linux with rsyslog

Linux
Logging
Rsyslog
Guides · Better Stack ·  Updated on October 11, 2023

Logging in Ruby: A Comparison of the Top 6 Libraries

There are many different logging libraries available for Ruby, each with its own strengths and weaknesses. Learn about the top 6 options in this article.

Logging
MrLogaLoga
Ougai
Ruby
Semantic Logger
Yell
Guides · Better Stack ·  Updated on November 23, 2023

A Complete Guide to Logging in Python with Loguru

Learn how to install, configure, and use the Loguru framework for logging in Python applications

Logging
Python
Guides · Better Stack ·  Updated on June 18, 2024

How to Collect, Process, and Ship Log Data with Logstash

Learn how Logstash streamlines the collection, processing, and shipping of log data at scale, boosting observability and troubleshooting capabilities.

Logging
Log Shippers
Logstash
Guides · Better Stack ·  Updated on November 23, 2023

How To Start Logging With .NET

Learn how to start logging with .NET and go from basics to best practices in no time.

Logging
.NET
Guides · Better Stack ·  Updated on November 23, 2023

How To Start Logging With Log4php

Learn how to start logging with Log4php and go from basics to best practices in no time.

Log4PHP
Logging
PHP
Guides · Better Stack ·  Updated on November 23, 2023

Logging in Go: A Comparison of the Top 9 Libraries

This article compares 9 Go logging libraries, discussing and comparing their features, performance, pros and cons, to determine which library is right for you

Go
Logging
Guides · Better Stack ·  Updated on December 19, 2023

Log.INFO vs. Log.DEBUG

When logging, logged messages are differentiated by their importance. In most logging frameworks we differentiate the following levels of importance: DEBUG - Lowest level. Fine-grained statements c...

Logging
Questions · Better Stack ·  Updated on October 11, 2023

Best Logging Practices for Safeguarding Sensitive Data

In this guide, you will learn several best practices for keeping sensitive data out of your logs

Best Practices
Logging
Sensitive Data
Guides · Better Stack ·  Updated on January 9, 2024

How to View and Manage Systemd Logs with Journalctl

Learn how to view and manage systemd logs with journalctl.

Linux
Logging
Ubuntu
Guides · Better Stack ·  Updated on March 15, 2023

Reading syslog output on a Mac

Same as Linux, MacOS saves system logs into a syslog file. This location of the syslog is /var/log/system.log. On newer MacOS versions, you will find the log at /private/var/log/system.log You can ...

Logging
Questions · Better Stack ·  Updated on October 11, 2023

How to Use Environmental Variables in Fluentd Config

Fluentd, starting from version v1.13.0, allows the integration of environment variables within its configuration using the syntax #{ENV['YOUR_ENV_VARIABLE']}. For instance, if you've defined an env...

Fluentd
Logging
Questions · Better Stack ·  Updated on February 5, 2024

How to Get Started with Logging in PHP

PHP has built-in features for logging errors but third-party tools also exist for this purpose. How do you know which one to pick? This article will equip you to answer that question.

Logging
PHP
Guides · Better Stack ·  Updated on November 23, 2023

How to Start Logging With Ruby on Rails

Learn how to start logging with Ruby on Rails and go from basics to best practices in no time.

Logging
Ruby
Ruby on Rails
Guides · Better Stack ·  Updated on November 23, 2023

Logging in Go with Slog: The Ultimate Guide

Learn everything about the new Slog package which brings high-performance structured, and leveled logging to the Go standard library

Go
Logging
Slog
Guides · Better Stack ·  Updated on June 18, 2024

How to Monitor a Whole Directory With Fluentd?

Fluentd provides an efficient way to monitor entire directories for log file updates. Let's say you want to track all log files in a directory like /var/log/app_dir, which contains multiple logs su...

Fluentd
Logging
Questions · Better Stack ·  Updated on February 5, 2024

The Best PHP Logging Libraries

There are a few logging libraries available for PHP, each with its own strengths and weaknesses. Learn about the top 3 options in this article.

Analog
KLogger
Logging
Monolog
PHP
Guides · Better Stack ·  Updated on November 23, 2023

How to Fix The “Pattern Not Match” Error in Fluentd

If you're new to FluentD and looking to build a solid foundation, consider checking out our comprehensive guide on how to collect, process, and ship log data with Fluentd. It provides valuable insi...

Fluentd
Logging
Questions · Better Stack ·  Updated on February 5, 2024

Where does node.js store logs?

Node.js doesn’t store logs in the file. Logs are printed into the STDERR and output is printed into the STDOUT. However, you can change that when you runt the javascript code from the shell and red...

Logging
Node.js
Questions · Better Stack ·  Updated on November 16, 2022

How to Reduce Logging Costs with Log Sampling

Redundant logs in large systems inflate data costs. Log sampling efficiently reduces this by randomly selecting logs, maintaining insights with less data.

Logging
Best Practices
Log sampling
Guides · Better Stack ·  Updated on January 5, 2024

Contextual Logging in Node.js with AsyncHooks

This article explains the importance of context logging in Node.js and demonstrates how to implement it using the async_hooks module

Logging
Node.js
Guides · Better Stack ·  Updated on June 28, 2024

Log Formatting in Production: 9 Best Practices

Learn 9 best practices for formatting your logs in production to make them easy to read, parse, and troubleshoot.

Best Practices
Log Formatting
Logging
Guides · Better Stack ·  Updated on December 4, 2023

The Top 6 Log Shippers and How to Choose One

This article will help you choose the right log shipper for your needs, and will also provide a comparison of the top 6 log shippers on the market

Filebeat
FluentBit
Fluentd
Logging
Log Shippers
Logstash
Rsyslog
Vector
Guides · Better Stack ·  Updated on January 9, 2024

How To Start Logging With Serilog

Learn how to start logging with Serilog and go from basics to best practices in no time.

Logging
.NET
Serilog
Guides · Better Stack ·  Updated on November 23, 2023

Practical Logging for PHP Applications with OpenTelemetry

Learn how to use the OpenTelemetry framework to instrument your PHP applications with code that gathers log data for observability pipelines

Logging
OpenTelemetry
PHP
Guides · Better Stack ·  Updated on September 5, 2024

How to Get Started with Logging in Flask

Learn how to start logging with Flask and go from basics to best practices in no time.

Python
Flask
Logging
Guides · Better Stack ·  Updated on October 12, 2023

How To Write Logs To A File With Python?

If you are new to logging in Python, please feel free to start with our Introduction to Python logging to get started smoothly. Otherwise, here is how to write logs to a file in Python: Using Basic...

Logging
Python
Questions · Better Stack ·  Updated on October 5, 2023

How to Change Log Levels Dynamically at Runtime

Logging plays a crucial role in troubleshooting and monitoring software systems, providing valuable insights into the behavior of your application at runtime. It allows you to track the flow of pro...

Logging
Log Level
Guides · Better Stack ·  Updated on December 19, 2023

Why Structured Logging is Fundamental to Observability

Unstructured logs hinder observability, but transforming them into structured data unlocks their immense value

Logging
Observability
Guides · Better Stack ·  Updated on October 16, 2024

What is Log Aggregation? Getting Started and Best Practices

Log aggregation is a key aspect of log management that involves consolidating log data from multiple sources and centralizing them in one place for easy searching and analysis

Best Practices
Log Aggregation
Logging
Guides · Better Stack ·  Updated on February 28, 2024

Getting Started with Collecting and Managing AWS Logs

In this article, we will cover the basics of logging on AWS, including setting up log collection, sending logs to different destinations, and creating alerts. Get started with logging on AWS today and ensure the smooth running of your infrastructure

AWS
CloudWatch
Logging
Guides · Better Stack ·  Updated on January 9, 2024

Getting Started with Collecting and Managing Azure Logs

This tutorial will cover the basics of logging in Azure, including collecting, viewing, and searching log entries, visualizing log data by creating charts, and setting up a log-based monitoring system.

Azure
Logging
Guides · Better Stack ·  Updated on November 23, 2023

How To Start Logging With NLog

Learn how to start logging with NLog and go from basics to best practices in no time.

Logging
.NET
NLog
Guides · Better Stack ·  Updated on January 9, 2024

How to Collect, Process, and Ship Log Data with Fluentd

Learn how to use Fluentd to collect, process, and ship log data at scale, and improve your observability and troubleshooting capabilities.

Fluentd
Logging
Log Shippers
Guides · Better Stack ·  Updated on April 22, 2024

10 Best Practices for Logging in Python

This article describes 10 best practices to follow when logging in Python applications to produce high quality logs that will help you keep your application running smoothly

Best Practices
Logging
Python
Guides · Better Stack ·  Updated on November 23, 2023

7 Ways to Optimize Your Elastic (ELK) Stack in Production

This article explores 7 key strategies to help you navigate the complexities of Elastic Stack management management

Beats
Elasticsearch
Elastic Stack
ELK
Kibana
Logging
Logstash
Guides · Better Stack ·  Updated on January 9, 2024

A Complete Guide to Pino Logging in Node.js

This tutorial will guide you through creating a production-ready logging system for your Node.js application using Pino

Logging
Node.js
Pino
Guides · Better Stack ·  Updated on December 6, 2023

15 Common Errors in Python and How to Fix Them

Dealing with errors is a significant challenge for developers. This article looks at some of the most common Python errors and discusses how to fix them

Errors
Logging
Python
Guides · Better Stack ·  Updated on December 8, 2023

A Complete Guide to Winston Logging in Node.js

Learn how to start logging with Winston in Node.js and go from basics to best practices in no time.

Node.js
Winston
Morgan
Logging
Guides · Better Stack ·  Updated on October 25, 2023

Nginx Logging: A Comprehensive Guide

This article will teach you to effectively leverage Nginx logs for enhanced visibility and control over your web server

Linux
Logging
Nginx
Guides · Better Stack ·  Updated on August 9, 2024

A Beginner's Guide to Log Management

Learn how log management can save you from the slow, frustrating, and costly process of manually sifting through log files.

Best Practices
Logging
Log Management
Guides · Better Stack ·  Updated on February 16, 2024

How to View and Configure Apache Access & Error Logs

Learn how to view and configure Apache access and error logs.

Apache
Linux
Logging
Guides · Better Stack ·  Updated on November 23, 2023

Logging in Docker: Everything You Need to Know

This comprehensive guide covers everything you need to know about collecting, managing, and centralizing Docker container and daemon logs in production

Docker
Dozzle
Logging
Guides · Better Stack ·  Updated on April 22, 2024

How to Get Started with Logging in Django

Django comes with an integrated logging module that provides basic as well as advanced logging features. Read on to learn how to start using it in your projects

Django
Logging
Python
Guides · Better Stack ·  Updated on December 6, 2023

How to Collect, Process, and Ship Log Data with Rsyslog

Modern computing systems generate diverse log messages, encompassing vital information from system logs (including kernel and boot messages), applications, databases, and network services or daemon...

Logging
Log Shippers
Rsyslog
Guides · Better Stack ·  Updated on November 23, 2023

A Comprehensive Guide to Logging in Python

Python provides a built-in logging module in its standard library that provides comprehensive logging capabilities for Python programs

Logging
Python
Guides · Better Stack ·  Updated on November 23, 2023

Logging Best Practices: 12 Dos and Don'ts

To maximize the effectiveness of your logging efforts, follow the 12 well-established logging best practices detailed in this article

Best Practices
Logging
Guides · Better Stack ·  Updated on October 4, 2024

Monitoring Linux Authentication Logs: A Practical Guide

Learn to effectively monitor Linux authentication logs to detect security threats with this practical step-by-step guide

Linux
Logging
Monitoring
Security
Guides · Better Stack ·  Updated on March 14, 2024

Logging in Python: A Comparison of the Top 6 Libraries

There are many different logging libraries available for Python, each with its own strengths and weaknesses. Learn about the top 6 options in this article.

Logging
Python
Guides · Better Stack ·  Updated on November 23, 2023

How to Send Logs to Multiple Outputs With Same Match Tags in Fluentd?

To direct logs matching a specific tag to multiple outputs in Fluentd, the @type copy directive can be utilized. Here's an example configuration: <match pattern> @type copy <store> ...

Fluentd
Logging
Questions · Better Stack ·  Updated on February 1, 2024

A Complete Introductory Guide to OpenTelemetry

Learn about the benefits, features, challenges, and best practices of OpenTelemetry, the open-source observability framework

Logging
Metrics
Observability
OpenTelemetry
Tracing
Guides · Better Stack ·  Updated on October 16, 2024

How to Log to Stdout with Python?

If you are new to logging in Python, please feel free to start with our Introduction to Python logging to get started smoothly. Otherwise, here is how to log to Stdout with Python: Using Basic Conf...

Logging
Python
Questions · Better Stack ·  Updated on October 5, 2023

Logging in Microservices: 5 Best Practices

Learn more about the best practices for effective logging in a microservice architecture

Best Practices
Logging
Microservices
Guides · Better Stack ·  Updated on December 19, 2023