# Set the priority of a message

You can set the `PRI` value of a [BSD](../../../docs/axosyslog-core/4.26/chapter-concepts/concepts-message-structure/concepts-message-pri/index.md) or [IETF](../../../docs/axosyslog-core/4.26/chapter-concepts/concepts-message-structure/concepts-message-ietfsyslog/index.md) syslog message with the `set-pri()` rewrite function by specifying a template string. This is useful, for example, if incoming messages do not have a `PRI` value specified by default, but a PRI value is required for filtering purposes.

When configured, the `set-pri()` function will only rewrite the `PRI` value of the message field.

Note If the specified parameter value is not a valid value, the function ignores it and sends a debug message. However, the AxoSyslog application will still send the message. 

See also the equivalent FilterX function, [`set_pri()`](../../../docs/axosyslog-core/4.26/filterx/function-reference/index.md#set-pri), which takes an integer instead of a template string.

## Declaration

Terminal window
```
    rewrite <rule-name> {
       set-pri("template-string");
    };
```

## Parameters

The `set-pri()` rewrite function expects a template string as its only parameter, for example:

  * `set-pri("42");`
  * `set-pri("$.json.priority");`



## Accepted values

The template string specified for the `set-pri()` rewrite function must expand to a natural number in the interval of 0–1023, inclusive. This means that if you, for example, extract the value from a syslog `<PRI>` header (such as `<42>`), then you need to remove the opening and closing brackets (`<` `>`) in the specified template string.

## Example: Temporarily raising the priority of an application

In the following example, the `set-pri()` rewrite function is used to temporarily raise the priority of the application `myprogram`:

Terminal window
```
    log {
       source { system(); };
       if (program("myprogram")){
       rewrite { set-pri("92"); };
       };
       destination { file("/var/log/mail.log"); };
       flags(flow-control);
    }
```

## Example: Change the priority in JSON-formatted log

In the following example, an application sends log messages in the following JSON format:

Terminal window
```
    {
       "time": "2003-10-11T22:14:15.003Z",
       "host": "mymachine",
       "priority": "165",
       "message": "An application event log entry."
    }
```

You can parse these logs with the [JSON parser](../../../docs/axosyslog-core/4.26/chapter-parsers/json-parser/index.md) function:

Terminal window
```
    {
       parser p_json {
       json-parser (prefix(".json."));
    }
```

As the application message contains a valid priority field, you can use the `set-pri()` rewrite function to modify the priority of the message:

Terminal window
```
    set-pri("$.json.priority");
```

## Options

The `set-pri()` rewrite rule has the following option.

## condition()

|   
---|---  
Type: | filter expression  
Default: | N/A  
  
_Description:_ Applies the rewrite rule only to the messages that match the specified filter expression. Messages that don’t match the filter pass through the rule unmodified, and continue to the next element of the log path. You can use any filter expression here, and you can reference an existing filter with the `filter()` function. For details, see [Conditional rewrites](../../../docs/axosyslog-core/4.26/chapter-manipulating-messages/modifying-messages/conditional-rewrite/index.md).

Last modified August 10, 2026: [Sync rewrite rule options with the source (d33662b7)](<https://github.com/axoflow/axosyslog-core-docs/commit/d33662b7e6212a930666d724aa0ba2f88d4ba4ae>)