Work in Progress: This project is currently under development and may not yet be fully stable or feature-complete.
AN extensible logging service designed to provide logging and client management functionalities.
- Application and Client Authentication: Secure application and client registration with API keys.
- Flexible Logging Levels: Log messages with different severity levels (INFO, WARNING, ERROR).
- Simple Integration: gRPC-based service with well-defined protobuf schemas.
To get started with the Logging Service, follow these instructions:
- Rust (for service implementation)
- Protocol Buffers Compiler (
protoc
)
-
Clone the Repository:
git clone https://github.com/Arteiii/logging.git cd logging
-
Run the Service:
cargo run
-
Enter the Development Shell:
Navigate to your project directory and run:
nix-shell
This command will drop you into a shell with all the necessary tools for building and running the service, including Rust and the Protocol Buffers Compiler (
protoc
). -
Build and Run the Service:
Inside the
nix-shell
, you can build and run the service as usual:cargo run
The Logging Service exposes the following gRPC methods:
- Log: Log a message from a client.
- RegisterApplication: Register a new application with the service.
- RegisterClient: Register a new client with the service.
{
"auth": {
"app_name": "MyApp",
"api_key": "abc123xyz"
},
"client_auth": {
"client_id": "client-456",
"api_key": "def789ghi"
},
"level": "INFO",
"message": "User successfully logged in"
}
{
"name": "MyApp"
}
{
"auth": {
"app_name": "MyApp",
"api_key": "abc123xyz"
},
"client_name": "ClientA",
"client_secret": "supersecret"
}
To run the tests using ghz, use the following command:
ghz --config=testing/test.json --insecure --concurrency=100 --rps=5000 --total=10000 --duration=10m --proto=proto/logging.proto -- 0.0.0.0:4444
- auth:
ApplicationAuth
- Application credentials. - client_auth:
ClientAuth
- Client credentials. - level:
LogLevel
- Severity level of the log. - message:
string
- The log message.
- name:
string
- Name of the application.
- status:
StatusResponse
- Status of the registration request.
- auth:
ApplicationAuth
- Application credentials. - client_name:
string
- Name of the client. - client_secret:
string
- Client secret.
- status:
StatusResponse
- Status of the registration request. - client_id:
string
- Unique identifier for the client.
This project is licensed under the GNU Affero General Public License (AGPL) v3.0. See the LICENSE file for details.
To see the list of all planned features, fixes, and enhancements for Version 1 of the project, please refer to the Version 1 Issue. This issue tracks all ongoing and upcoming work.
For questions or support, please reach out to [email protected].