////
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at

    https://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
////
[#org_apache_logging_log4j_core_appender_rolling_SizeBasedTriggeringPolicy]
= SizeBasedTriggeringPolicy

Class:: `org.apache.logging.log4j.core.appender.rolling.SizeBasedTriggeringPolicy`
Provider:: `org.apache.logging.log4j:log4j-core`



[#org_apache_logging_log4j_core_appender_rolling_SizeBasedTriggeringPolicy-XML-snippet]
== XML snippet
[source, xml]
----
<SizeBasedTriggeringPolicy size=""/>
----

[#org_apache_logging_log4j_core_appender_rolling_SizeBasedTriggeringPolicy-attributes]
== Attributes

Optional attributes are denoted by `?`-suffixed types.

[cols="1m,1m,1m,5"]
|===
|Name|Type|Default|Description

|size
|xref:../scalars.adoc#java_lang_String[String]?
|
a|The size of the file before rollover is required.

|===
