
# 使用FunctionGraph的Java函数配置Log4j2实现日志打印
#### 案例概述
函数工作流服务支持Java函数配置log4j2，本章节将介绍如何使用函数和log4j2的能力实现日志打印。
 #### 步骤一：下载程序包
本例使用Java语言实现日志打印，请下载[Log_demo.jar](https://functionstage-community.obs.cn-north-1.myhuaweicloud.com/examples/log4j2_example_java.zip)样例代码直接使用，无需其他修改。
关键示例代码如下所示，可参考了解。
```
package org.example;
import com.huawei.services.runtime.Context;
import lombok.extern.slf4j.Slf4j;
import org.apache.logging.log4j.core.config.Configurator;
import org.apache.logging.log4j.util.LoaderUtil;
import java.net.URISyntaxException;
import java.util.Objects;
@Slf4j
public class LogTest {
    public void init(Context context) {
        try {
            Configurator.reconfigure(Objects.requireNonNull(LoaderUtil.getThreadContextClassLoader().getResource("log4j2-custom.xml")).toURI());
        } catch (URISyntaxException e) {
            throw new RuntimeException(e);
        }
    }
    public void handler(String event, Context context) {
        log.debug("debug log");
        log.info("info log");
        log.warn("warn log");
        log.error("info log");
    }
}
```
其中初始化入口添加了如下代码：
```
Configurator.reconfigure(Objects.requireNonNull(LoaderUtil.getThreadContextClassLoader().getResource("log4j2-custom.xml")).toURI());
```
#### 步骤二：创建函数
1. 登录[函数工作流控制台](https://console.huaweicloud.com/functiongraph/)，在左侧导航栏选择"函数 \> 函数列表"，右上角单击"创建函数"进入创建函数界面。
2. 选择"创建空白函数"，基本信息配置如下： 
   - 函数类型：选择"事件函数"。
   
   - 区域：根据实际情况选择。
   
   - 函数名称：自定义。
   
   - 运行时：选择"Java 8"。
   
   
   其他参数保持默认，单击"创建函数"。
   
   
3. 上传函数代码。 
   函数创建完成后，进入详情页面，在"代码"页签下选择"上传代码 \> Zip \> 文件"，添加[步骤一：下载程序包]中下载的Zip代码包进行部署。
   
   
4. 开启类隔离。 
   成功部署代码包后，如[图1]所示，选择"设置 \> 高级设置"，开启"类隔离"，单击"保存"。
   图1开启类隔离   
   ![](https://support.huaweicloud.com/bestpractice-functiongraph/zh-cn_image_0000002174311476.png "点击放大")
   
   
5. 设置函数执行入口。 
   如[图2]所示，选择"设置 \> 常规设置"，将"函数执行入口"参数设置为：org.example.LogTest.handler，单击"保存"。
   图2设置函数执行入口   
   ![](https://support.huaweicloud.com/bestpractice-functiongraph/zh-cn_image_0000002209797565.png "点击放大")
   
   
6. 设置函数初始化入口。 
   如[图3]所示，选择"设置 \> 生命周期"，开启"初始化配置"，将"函数初始化入口"参数设置为：org.example.LogTest.init，单击"保存"。
   图3设置函数初始化入口   
   ![](https://support.huaweicloud.com/bestpractice-functiongraph/zh-cn_image_0000002174311480.png "点击放大")
   
   
 
#### 步骤三：调试函数
1. 配置完所有参数后，如[图4]所示，选择"代码"页签，单击"配置测试事件"，默认使用"空白模板"，单击"创建"。
   
   图4配置测试事件   
   ![](https://support.huaweicloud.com/bestpractice-functiongraph/zh-cn_image_0000002209797569.png "点击放大")
   
   
2. 选择创建好的测试事件，单击"测试"，在右侧"执行结果"可查看函数成功打印日志结果。
 
