# logrotate

[[Source]](https://github.com/XRPLF/rippled/blob/master/src/xrpld/rpc/handlers/LogRotate.cpp)

The `logrotate` command closes and reopens the log file. This is intended to help with log rotation on Linux file systems.

Most Linux systems come pre-installed with a [`logrotate`](https://linux.die.net/man/8/logrotate) program, which is separate from this command. Application specific log rotation scripts are placed in `/etc/logrotate.d`

The following script is a sample that can be created as `/etc/logrotate.d/rippled`


```logrotate
/var/log/rippled/*.log {
  daily
  minsize 200M
  rotate 7
  nocreate
  missingok
  notifempty
  compress
  compresscmd /usr/bin/nice
  compressoptions -n19 ionice -c3 gzip
  compressext .gz
  postrotate
    /opt/ripple/bin/rippled --conf /opt/ripple/etc/rippled.cfg logrotate
  endscript
}
```

You can configure parameters such as `minsize` and `rotate` depending on the amount of logs you keep. Use the `log_level` setting in your `rippled.cfg` file to configure how verbose your server's logs are. This sample script is based on standard `log_level` and stores approximately 2 weeks worth of logs in a compressed format.

The official packages [for CentOS/Red Hat](/docs/infrastructure/installation/install-rippled-on-rhel) and [Ubuntu or Debian](/docs/infrastructure/installation/install-rippled-on-ubuntu) provide the script `/etc/logrotate.d/rippled` by default. You can make modifications to this as required. Your modifications will not be overwritten on package upgrades. 

You should have only one system log rotation script per application. Please ensure that you do not have any other log rotation that handles the same directory.

*The `logrotate` method is an [admin method](/docs/references/http-websocket-apis/admin-api-methods) that cannot be run by unprivileged users.*

### Request Format

An example of the request format:

WebSocket

```json
{
   "id": "lr1",
   "command": "logrotate"
}
```

Commandline

```sh
#Syntax: logrotate
rippled logrotate
```

The request includes no parameters.

### Response Format

An example of a successful response:

JSON-RPC

```json
200 OK

{
   "result" : {
      "message" : "The log file was closed and reopened.",
      "status" : "success"
   }
}
```

Commandline

```json
Loading: "/etc/rippled.cfg"
Connecting to 127.0.0.1:5005

{
   "result" : {
      "message" : "The log file was closed and reopened.",
      "status" : "success"
   }
}
```

The response follows the [standard format](/docs/references/http-websocket-apis/api-conventions/response-formatting), with a successful result containing the following fields:

| `Field` | Type | Description |
|  --- | --- | --- |
| `message` | String | On success, contains the message `The log file was closed and reopened.` |


### Possible Errors

* Any of the [universal error types](/docs/references/http-websocket-apis/api-conventions/error-formatting#universal-errors).