<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!--
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
   http://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.
-->
<flowController>
  <maxTimerDrivenThreadCount>10</maxTimerDrivenThreadCount>
  <maxEventDrivenThreadCount>5</maxEventDrivenThreadCount>
  <rootGroup>
    <id>fe4a3a42-53b6-4af1-a80d-6fdfe60de97f</id>
    <name>NiFi Flow</name>
    <position x="0.0" y="0.0"/>
    <comment/>
    <processor>
      <id>12e3dece-dde5-44a2-8691-6d6bb2fab147</id>
      <name>LogAttribute</name>
      <position x="3239.369384765625" y="822.25244140625"/>
      <styles/>
      <comment/>
      <class>org.apache.nifi.processors.standard.LogAttribute</class>
      <maxConcurrentTasks>1</maxConcurrentTasks>
      <schedulingPeriod>0 sec</schedulingPeriod>
      <penalizationPeriod>30 sec</penalizationPeriod>
      <yieldPeriod>1 sec</yieldPeriod>
      <bulletinLevel>WARN</bulletinLevel>
      <lossTolerant>false</lossTolerant>
      <scheduledState>RUNNING</scheduledState>
      <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
      <runDurationNanos>0</runDurationNanos>
      <property>
        <name>Log Level</name>
        <value>info</value>
      </property>
      <property>
        <name>Log Payload</name>
        <value>false</value>
      </property>
      <property>
        <name>Attributes to Log</name>
      </property>
      <property>
        <name>Attributes to Ignore</name>
      </property>
      <property>
        <name>Log prefix</name>
      </property>
      <autoTerminatedRelationship>success</autoTerminatedRelationship>
    </processor>
    <processor>
      <id>c6ced523-be07-48d3-90c2-82b87d208f2e</id>
      <name>TailFile</name>
      <position x="2629.369384765625" y="761.25244140625"/>
      <styles/>
      <comment/>
      <class>org.apache.nifi.processors.standard.TailFile</class>
      <maxConcurrentTasks>1</maxConcurrentTasks>
      <schedulingPeriod>1 sec</schedulingPeriod>
      <penalizationPeriod>30 sec</penalizationPeriod>
      <yieldPeriod>1 sec</yieldPeriod>
      <bulletinLevel>WARN</bulletinLevel>
      <lossTolerant>false</lossTolerant>
      <scheduledState>RUNNING</scheduledState>
      <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
      <runDurationNanos>0</runDurationNanos>
      <property>
        <name>File to Tail</name>
        <value>/Users/user/getFile/log.txt</value>
      </property>
      <property>
        <name>Rolling Filename Pattern</name>
      </property>
      <property>
        <name>State File</name>
        <value>log.state</value>
      </property>
      <property>
        <name>Initial Start Position</name>
        <value>Beginning of File</value>
      </property>
      <property>
        <name>File Location</name>
        <value>Local</value>
      </property>
    </processor>
    <connection>
      <id>12899241-005e-4d98-b3fa-7e00b1840bac</id>
      <name/>
      <bendPoints/>
      <labelIndex>1</labelIndex>
      <zIndex>0</zIndex>
      <sourceId>c6ced523-be07-48d3-90c2-82b87d208f2e</sourceId>
      <sourceGroupId>fe4a3a42-53b6-4af1-a80d-6fdfe60de97f</sourceGroupId>
      <sourceType>PROCESSOR</sourceType>
      <destinationId>12e3dece-dde5-44a2-8691-6d6bb2fab147</destinationId>
      <destinationGroupId>fe4a3a42-53b6-4af1-a80d-6fdfe60de97f</destinationGroupId>
      <destinationType>PROCESSOR</destinationType>
      <relationship>success</relationship>
      <maxWorkQueueSize>0</maxWorkQueueSize>
      <maxWorkQueueDataSize>0 MB</maxWorkQueueDataSize>
      <flowFileExpiration>0 sec</flowFileExpiration>
    </connection>
  </rootGroup>
  <controllerServices/>
  <reportingTasks/>
</flowController>
