今天试了一下在Activiti中使用log4j来进行配置发现这个会出现问题,其实Activiti中的日志系统是采用的是slf4j而不是log4j

然后使用slf4j驱动log4j来做的

通过ProcessEngineImpl中的源码可以看出

  1 /* Licensed under the Apache License, Version 2.0 (the "License");
  2  * you may not use this file except in compliance with the License.
  3  * You may obtain a copy of the License at
  4  *
  5  *      http://www.apache.org/licenses/LICENSE-2.0
  6  *
  7  * Unless required by applicable law or agreed to in writing, software
  8  * distributed under the License is distributed on an "AS IS" BASIS,
  9  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 10  * See the License for the specific language governing permissions and
 11  * limitations under the License.
 12  */
 13 package org.activiti.engine.impl;
 14
 15 import java.util.Map;
 16
 17 import org.activiti.engine.FormService;
 18 import org.activiti.engine.HistoryService;
 19 import org.activiti.engine.IdentityService;
 20 import org.activiti.engine.ManagementService;
 21 import org.activiti.engine.ProcessEngine;
 22 import org.activiti.engine.ProcessEngines;
 23 import org.activiti.engine.RepositoryService;
 24 import org.activiti.engine.RuntimeService;
 25 import org.activiti.engine.TaskService;
 26 import org.activiti.engine.impl.cfg.ProcessEngineConfigurationImpl;
 27 import org.activiti.engine.impl.cfg.TransactionContextFactory;
 28 import org.activiti.engine.impl.el.ExpressionManager;
 29 import org.activiti.engine.impl.interceptor.CommandExecutor;
 30 import org.activiti.engine.impl.interceptor.SessionFactory;
 31 import org.activiti.engine.impl.jobexecutor.JobExecutor;
 32 import org.slf4j.Logger;
 33 import org.slf4j.LoggerFactory;
 34
 35 /**
 36  * @author Tom Baeyens
 37  */
 38 public class ProcessEngineImpl implements ProcessEngine {
 39
 40   private static Logger log = LoggerFactory.getLogger(ProcessEngineImpl.class);
 41
 42   protected String name;
 43   protected RepositoryService repositoryService;
 44   protected RuntimeService runtimeService;
 45   protected HistoryService historicDataService;
 46   protected IdentityService identityService;
 47   protected TaskService taskService;
 48   protected FormService formService;
 49   protected ManagementService managementService;
 50   protected JobExecutor jobExecutor;
 51   protected CommandExecutor commandExecutor;
 52   protected Map<Class<?>, SessionFactory> sessionFactories;
 53   protected ExpressionManager expressionManager;
 54   protected TransactionContextFactory transactionContextFactory;
 55   protected ProcessEngineConfigurationImpl processEngineConfiguration;
 56
 57   public ProcessEngineImpl(ProcessEngineConfigurationImpl processEngineConfiguration) {
 58     this.processEngineConfiguration = processEngineConfiguration;
 59     this.name = processEngineConfiguration.getProcessEngineName();
 60     this.repositoryService = processEngineConfiguration.getRepositoryService();
 61     this.runtimeService = processEngineConfiguration.getRuntimeService();
 62     this.historicDataService = processEngineConfiguration.getHistoryService();
 63     this.identityService = processEngineConfiguration.getIdentityService();
 64     this.taskService = processEngineConfiguration.getTaskService();
 65     this.formService = processEngineConfiguration.getFormService();
 66     this.managementService = processEngineConfiguration.getManagementService();
 67     this.jobExecutor = processEngineConfiguration.getJobExecutor();
 68     this.commandExecutor = processEngineConfiguration.getCommandExecutor();
 69     this.sessionFactories = processEngineConfiguration.getSessionFactories();
 70     this.transactionContextFactory = processEngineConfiguration.getTransactionContextFactory();
 71
 72     commandExecutor.execute(processEngineConfiguration.getSchemaCommandConfig(), new SchemaOperationsProcessEngineBuild());
 73
 74     if (name == null) {
 75       log.info("default activiti ProcessEngine created");
 76     } else {
 77       log.info("ProcessEngine {} created", name);
 78     }
 79
 80     ProcessEngines.registerProcessEngine(this);
 81
 82     if ((jobExecutor != null) && (jobExecutor.isAutoActivate())) {
 83       jobExecutor.start();
 84     }
 85
 86     if (processEngineConfiguration.getProcessEngineLifecycleListener() != null) {
 87       processEngineConfiguration.getProcessEngineLifecycleListener().onProcessEngineBuilt(this);
 88     }
 89   }
 90
 91   public void close() {
 92     ProcessEngines.unregister(this);
 93     if ((jobExecutor != null) && (jobExecutor.isActive())) {
 94       jobExecutor.shutdown();
 95     }
 96
 97     commandExecutor.execute(processEngineConfiguration.getSchemaCommandConfig(), new SchemaOperationProcessEngineClose());
 98
 99     if (processEngineConfiguration.getProcessEngineLifecycleListener() != null) {
100       processEngineConfiguration.getProcessEngineLifecycleListener().onProcessEngineClosed(this);
101     }
102   }
103
104   // getters and setters //
105
106   public String getName() {
107     return name;
108   }
109
110   public IdentityService getIdentityService() {
111     return identityService;
112   }
113
114   public ManagementService getManagementService() {
115     return managementService;
116   }
117
118   public TaskService getTaskService() {
119     return taskService;
120   }
121
122   public HistoryService getHistoryService() {
123     return historicDataService;
124   }
125
126   public RuntimeService getRuntimeService() {
127     return runtimeService;
128   }
129
130   public RepositoryService getRepositoryService() {
131     return repositoryService;
132   }
133
134   public FormService getFormService() {
135     return formService;
136   }
137
138   public ProcessEngineConfigurationImpl getProcessEngineConfiguration() {
139     return processEngineConfiguration;
140   }
141 }

View Code

这两个有啥区别?自己google吧

pom.xml

 1         <!-- log4j -->
 2         <!-- https://mvnrepository.com/artifact/log4j/log4j -->
 3         <dependency>
 4             <groupId>log4j</groupId>
 5             <artifactId>log4j</artifactId>
 6             <version>1.2.17</version>
 7         </dependency>
 8         <!-- slf4j -->
 9         <dependency>
10             <groupId>org.slf4j</groupId>
11             <artifactId>slf4j-log4j12</artifactId>
12             <version>1.7.2</version>
13         </dependency>

添加log4j.properties

### set log levels ###
log4j.rootLogger = debug ,  stdout### \u8F93\u51FA\u5230\u63A7\u5236\u53F0 ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n### \u8F93\u51FA\u5230\u65E5\u5FD7\u6587\u4EF6 ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = logs/error.log \#\# \u5F02\u5E38\u65E5\u5FD7\u6587\u4EF6\u540D
log4j.appender.D.Append = true
log4j.appender.D.Threshold = ERROR \#\# \u53EA\u8F93\u51FAERROR\u7EA7\u522B\u4EE5\u4E0A\u7684\u65E5\u5FD7\!\!\!
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

View Code

然后就可以使用了

你只要在java文件这样写就可以了

 1 package cn.lonecloud.mavenActivi;
 2
 3 import org.activiti.engine.ProcessEngine;
 4 import org.activiti.engine.ProcessEngines;
 5 import org.activiti.engine.RuntimeService;
 6 import org.activiti.engine.TaskService;
 7 import org.activiti.engine.runtime.ProcessInstance;
 8 //使用log4j导入的包
 9 import org.apache.log4j.Logger;
10 import org.junit.Test;
11 //使用slf4j的导入的包
12 //import org.slf4j.Logger;
13 //import org.slf4j.LoggerFactory;
14
15 public class InstanceDemo {
16     Logger logger=Logger.getLogger(this.getClass());
17 //    Logger logger=LoggerFactory.getLogger(this.getClass());
18     ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
19     RuntimeService runtimeService = processEngine.getRuntimeService();
20     TaskService taskService=processEngine.getTaskService();
21     @Test
22     public void testInstance(){
23         ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("Instance","Test02");
24         logger.debug("获取实例id"+processInstance.getId());
25     }
26 }

转载于:https://www.cnblogs.com/lonecloud/p/5798944.html

Activiti中的log4j(slf4j)的配置相关推荐

  1. log日志java web_Javaweb项目中使用Log4j记录日志

    Log4j 是 Apache 的一个开放源代码项目,通过使用 Log4j,我们可以控制日志信息输送的目的地是控制台.文件.GUI 组件.甚至是套接口服务器.NT 的事件记录器.UNIX Syslog ...

  2. Java基础学习总结(42)——Log4j 2快速入门及Log4j 2 + Slf4j 的配置和使用

    1. 去官方下载log4j 2,导入jar包,基本上你只需要导入下面两个jar包就可以了(xx是乱七八糟的版本号): log4j-core-xx.jar log4j-api-xx.jar 2. 导入到 ...

  3. Activiti中的高级脚本:自定义配置注入

    脚本任务可能是Activiti代码库中"最古老的"类之一,但我认为它仍然未被许多人使用. (可以理解的?)缺点当然是性能(解释还是编译),并且从IDE角度来看支持较少. 但是,好处 ...

  4. 如何实现Activiti的分支条件的自定义配置(转)

    如何实现Activiti的分支条件的自定义配置 博客分类: Activiti Java SaaS 一.Activiti的流程分支条件的局限 Activiti的流程分支条件目前是采用脚本判断方式,并且需 ...

  5. Log slf4j+logback配置

    一. 简单配置 1.添加依赖 <dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api ...

  6. 【转】最详细的Log4J使用教程一、入门实例二、Log4J基本使用方法三、Spring中使用Log4J四、实战经验总结

    原文地址:http://www.codeceo.com/article/log4j-usage.html 日志是应用软件中不可缺少的部分,Apache的开源项目log4j是一个功能强大的日志组件,提供 ...

  7. 3.Web项目中使用Log4j实例

    转自:https://blog.csdn.net/luohai859/article/details/52250807 上面代码描述了Log4j的简单应用,其实使用Log4j也就是这样简单方便.当然除 ...

  8. Java工程中使用Log4j小记

    1.工程中引入log4j的jar包,可到http://logging.apache.org/log4j/1.2/download.html下载: 2.在src目录下配置log4j.properties ...

  9. 解决activiti中由模板转换的流程图连线名称缺失问题

    2019独角兽企业重金招聘Python工程师标准>>> 版本声明:Activiti 5.22.0 通常,由模板发布流程的代码大致如下: private Deployment conv ...

  10. SpringBoot中使用log4j进行日志管理

    场景 SpringBoot项目中使用log4j进行日志管理. 实现 1.因为SpringBoot默认是使用logback,所以要修改pom.xml 过滤掉自带的spring-boot-starter- ...

最新文章

  1. SimpleDateFormat使用详解 转
  2. mysql 多表联查的效率_Mysql 多表联合查询效率分析
  3. MapReduce_自学过程(一)
  4. torch的拼接函数_从零开始深度学习Pytorch笔记(13)—— torch.optim
  5. WireShark之抓包过滤链接部分
  6. 汇编语言(三十三)之四进制转十进制
  7. Cocos2d-x 3.2:通过ClippingNode实现一个功能完善的跑马灯公告(1)
  8. java 进程不关闭_java运行程序关不了窗口
  9. obs命令行工具obsutil的使用测试
  10. 干货|在美国不要读博的12条理由
  11. 汇编语言转为c语言,如何把汇编语言转换成C语言
  12. 十四、Hadoop学习笔记————Zookeeper概述与基本概念
  13. B00001 C语言动态存储分配空间作为数组
  14. 模拟tcp_TCP 半连接队列和全连接队列满了会发生什么?又该如何应对?
  15. find命令 、 文件名后缀
  16. 同一方法被多个Aspect拦截, 修改切面@Around @Before的执行顺序
  17. 中国运营商考虑用WiFi亭代替公共电话亭
  18. 【机器学习线性代数】06 解方程组:从空间的角度再引入
  19. 自定义android控件:快速检索QuickSearch
  20. 数模学习(模糊数学篇)——模糊识别(python实现)

热门文章

  1. shell 执行qt生成文件_QT-窗口打印debug信息,本地日志保存,以及执行shell脚本并且把信息打印在窗口...
  2. tina中信号带宽_如何理解选择示波器带宽的5倍法则 ?
  3. git 为什么不能断点_Git 2.29 让 Git 成功“牵手”Gerrit
  4. Java获取文件的目录_Java获取文件目录(路径)的方式
  5. android tabhost 跳转,TabHost中跳转到指定Tab页问题
  6. c语言排列10个数字的大小,[求助][C语言求助]输入10个数字,并将这些数字由大到小排列...
  7. java mavenpom_java-使用pom-packaging Maven项目作为依赖项
  8. 怎样通过java用web3j查询以太坊交易信息?
  9. Java 集合系列Stack详细介绍(源码解析)和使用示例
  10. unity3d所要知道的基础知识体系大纲,可以对照着学习