# Copyright 2020 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# For ARCVM related logs:
# - Log all messages to /var/log/arc.log.
# - Log important stuff (EMERG..ERR) to /var/log/messages.
if $syslogtag startswith 'arc-' then -/var/log/arc.log
if $syslogtag startswith 'arc-' and $syslogseverity >= '4' then ~
if $syslogtag startswith 'arcvm' then -/var/log/arc.log
if $syslogtag startswith 'arcvm' and $syslogseverity >= '4' then ~
