> For the complete documentation index, see [llms.txt](https://vostok.gitbook.io/logging/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://vostok.gitbook.io/logging/prototype/basics.md).

# Basics

This page includes the basic concepts of Vostok.Logging

### [ILog](https://github.com/vostok/logging.abstractions/blob/master/Vostok.Logging.Abstractions/ILog.cs)

The main interface, represents a log. \
There are two [standard log implementations](/logging/prototype/implementations.md) in Vostok, developers use `ILog` to write their own implementations.

`ILog` has three methods:

| Method       | Description                                                                                                                                                                  |
| ------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Log          | Logs the given `LogEvent`. Read more about extensions [here](/logging/prototype/syntax.md#log-extensions).                                                                   |
| IsEnabledFor | Returns whether the current log is configured to log events of the given `LogLevel`.                                                                                         |
| ForContext   | Returns a copy of the log operating in the given source context. For details, see [Advanced usage](/logging/prototype/advanced-usage/custom-implementations.md#for-context). |

### [LogEvent](https://github.com/vostok/logging.abstractions/blob/master/Vostok.Logging.Abstractions/LogEvent.cs)

Event consists of a level, a timestamp, a log message, a saved exception and user-defined properties.

[**Level**](https://github.com/vostok/logging.abstractions/blob/master/Vostok.Logging.Abstractions/LogLevel.cs)\
One of five level of the event:

* **Debug**\
  For verbose output.
* **Info**\
  For neutral messages.
* **Warn**\
  For non-critical errors that don't interrupt the normal operation of the application.
* **Error**\
  For unexpected errors that may require human attention.
* **Fatal**\
  For critical errors that result in application shutdown.

**Timestamp**\
Represents the time when the event was created.

**Message template**\
The template of the log message containing placeholders to be filled with values from.\
A few examples can be found [here](/logging/prototype/syntax.md#message-template).

**Properties**\
Contains various user-defined properties of the event.

**Exception**\
The error associated with this log event.

{% hint style="info" %}
You don't need to create LogEvent yourself, extensions do it for you.

Learn more about how to use extension syntax [here](/logging/prototype/syntax.md).
{% endhint %}
