<!--
  ~ Copyright (c) 2010-2021 Evolveum
  ~
  ~ Licensed 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.
  -->

<task xmlns="http://midpoint.evolveum.com/xml/ns/public/common/common-3"
      xmlns:s="http://midpoint.evolveum.com/xml/ns/public/model/scripting-3">
    <name>Enable global tracing</name>
    <ownerRef oid="00000000-0000-0000-0000-000000000002"/>
    <executionState>runnable</executionState>
    <activity>
        <work>
            <nonIterativeScripting>
                <scriptExecutionRequest>
                    <s:execute>
                        <s:script>
                            <code>
                                import com.evolveum.midpoint.wf.impl.processes.common.SpringApplicationContextHolder
                                import com.evolveum.midpoint.task.api.TaskManager
                                import com.evolveum.midpoint.xml.ns._public.common.common_3.*

                                profile = new TracingProfileType(prismContext)
                                    .collectLogEntries(true)
                                    .beginTracingTypeProfile()
                                        .level(TracingLevelType.NORMAL)
                                    .end()
                                    .fileNamePattern("trace %{timestamp} %{focusName} %{milliseconds}")
                                    .beginLoggingOverride()
                                        .beginLevelOverride()
                                            .logger("com.evolveum.midpoint.model")
                                            .logger("com.evolveum.midpoint.wf")
                                            .level(LoggingLevelType.TRACE)
                                        .end()
                                    .end()

                                SpringApplicationContextHolder.getBean("taskManager", TaskManager.class)
                                    .setGlobalTracingOverride(Arrays.asList(TracingRootType.values()), profile)
                            </code>
                        </s:script>
                        <s:forWholeInput>true</s:forWholeInput>
                    </s:execute>
                </scriptExecutionRequest>
            </nonIterativeScripting>
        </work>
    </activity>
</task>
