Java web 自动备份数据库和log4j日志
利用监听自动备份
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>muju_pro</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>Log4jInitServlet</servlet-name>
<servlet-class>com.rfx.servlet.Log4jInitServlet</servlet-class>//日志初始化类
<init-param>
<param-name>log4j</param-name>
<param-value>/WEB-INF/log4j.properties</param-value>//日志资源文件配置log4j,jar
</init-param>
<load-on-startup>1</load-on-startup>//设置服务器启动延时多久执行
</servlet>
<servlet-mapping>
<servlet-name>Log4jInitServlet</servlet-name>
<url-pattern>*.init</url-pattern>//设置映射
</servlet-mapping>
<listener>
<listener-class>com.rfx.listener.ZiJianListener</listener-class>//配置监听
</listener>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>//配置日志,这里用的spring的jar包,
</listener>
</web-app>
监听
package com.rfx.listener; import java.util.Timer; import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; /**
* <p>自检监听</p>
* @author Administrator
*
*/
public class ZiJianListener implements ServletContextListener {
private Timer timer=null;
private final Log log = LogFactory.getLog(getClass());
@Override
public void contextDestroyed(ServletContextEvent arg0) { } @Override
public void contextInitialized(ServletContextEvent arg0) {
timer =new Timer(true);
//arg0.getServletContext().log("定时器已启动");//log4j
// System.out.println("定时器启动");
log.info("定时器启动");
//调用自检
timer.schedule(new ZiJianTask(arg0.getServletContext()), 0,12*60*60*1000);
//调用备份数据库
timer.schedule(new DBBackUpTask(arg0.getServletContext()),0,24*60*60*1000);
//arg0.getServletContext().log("已添加任务");
} }
备份数据库
package com.rfx.listener; import java.io.File;
import java.io.IOException;
import java.text.Format;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimerTask; import javax.servlet.ServletContext; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; public class DBBackUpTask extends TimerTask{
private ServletContext context=null;
private final Log log = LogFactory.getLog(getClass());
public DBBackUpTask(ServletContext context) {
this.context=context;
}
public static boolean exportDatabaseTool(String userName, String password, String SID, String savePath, String fileName) throws InterruptedException {
File saveFile = new File(savePath);
if (!saveFile.exists()) {// 如果目录不存在
saveFile.mkdirs();// 创建文件夹
}
try {
Process process = Runtime.getRuntime().exec("exp " + userName + "/" + password + "@" + SID + " file=" + savePath + "/" + fileName + ".dmp");
if(process.waitFor() == 0){//0 表示线程正常终止。
return true;
}
} catch (IOException e) {
e.printStackTrace();
}
return false;
}
@Override
public void run() {
Format format = new SimpleDateFormat("yyyyMMdd");
String filePathString="MJku"+format.format(new Date());
try {
if (exportDatabaseTool("rfxmujuku", "rfx", "orcl", "D:/MuJuKuDBBeiFen", filePathString)) {
System.out.println("数据库成功备份!!!");
} else {
System.out.println("数据库备份失败!!!");
}
} catch (InterruptedException e) {
e.printStackTrace();
} } }
log4j资源文件
log4j.rootLogger=debug, stdout ,R ### stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[%d{yyyy\-MM\-dd HH\:mm\:ss}] %p (%F:%L) - %m%n
### R ###
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=D:/muju.log
log4j.appender.R.MaxFileSize=100KB
log4j.appender.R.MaxBackupIndex=5 log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=[%d{yyyy\-MM\-dd HH\:mm\:ss}] %p %c - %m%n
日志初始化
package com.rfx.servlet; import java.io.IOException; import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.log4j.PropertyConfigurator; /**
* Servlet implementation class Log4jInitServlet
*/
@WebServlet("/Log4jInitServlet.init")
public class Log4jInitServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private final Log log = LogFactory.getLog(getClass());
/**
* @see HttpServlet#HttpServlet()
*/
public Log4jInitServlet() {
super();
// TODO Auto-generated constructor stub
}
public void init() {
String prefix = getServletContext().getRealPath("/");
String file = getInitParameter("log4j"); if (file != null) {
//System.out.println("log4j 初始化成功");
log.info("log4j初始化成功");
PropertyConfigurator.configure(prefix+ file);
} else {
log.info("log4j初始化失败");
//System.out.println("log4j 初始化失败");
} } }

自行导包
Java web 自动备份数据库和log4j日志的更多相关文章
- 在linux和windows下自动备份数据库
摘要: 详细介绍在windows和linux下自动备份数据库的过程,希望可以让新手立即上手吧! 本文档内容共分为2大部分:linux和windows Linux和windows都分为:准备工作和操作阶 ...
- SQLServer2005利用维护计划自动备份数据库
经常性忘了给数据库备份,结果当数据库发生问题的时候,才发现备份是1个月以前的,那个后悔与懊恼还加惭愧啊,别提有对难受了.要认为的记住去备份比较难,每天事情又那么多,所以有了这个自动备份就不用愁了.先拷 ...
- Sql Server自动备份数据库,定期删除备份
//实现:每天自动备份数据库,定期删除备份 //步骤:[开始]--[所有程序]--[Microsoft SQL Server 2005]--[SQL Server Management Studio] ...
- SQL Server 定时自动备份数据库
在SQL Server中出于数据安全的考虑,所以需要定期的备份数据库,这篇文章介绍使用SQL Server 数据库代理中的作业定时自动备份数据库. 1.启动SQL Server代理服务,如下图: 绿色 ...
- MSSQL Express版本自动备份数据库
由于Express版本的数据库没有自动备份数据库的功能,所以需要自己搭建好备份功能 一.具体原理: 1.利用SQL备份命令:Backup Database 2.使用sqlcmd执行备份命令 3.使用系 ...
- CentOS下使用crontab+mysqldump实现定时自动备份数据库
一 : 为什么要进行数据库的备份? 最主要的原因:尽可能地减少损失,包括时间上.精神上和金钱上的损失.很多人都不注意备份数据,以致在发生问题后丢失大量的重要数据.要知道,在地球上网是很危险的,即使做好 ...
- php每天自动备份数据库
php每天自动备份数据库 windows中如何添加计划任务? 前提:添加windows计划任务,每天打开备份数据库的页面.1.打开http://localhost/thinkphp3.2/index. ...
- SQL Server 2008、SQL Server 2008R2 自动备份数据库
让SQL Server 2008自动备份数据库,需要建立一个SQL Server作业,并启动SQL Server代理,使该作业定期运行. 具体来说,可以按以下步骤进行: 一.打开SQL Server ...
- Navicat自动备份数据库
@ 目录 Navicat自动备份数据库 备份与还原 修改备份位置 MySQL:5.7 Navicat:11 Windows10 重要数据库的定时备份是非常重要的,使用Navicat可以非常方便快捷地自 ...
随机推荐
- selenium 浏览器标签切换
from time import sleep from selenium import webdriver from selenium.webdriver.chrome.options import ...
- 基于Docker的MySql
MySQL Server安装教程 考虑到实际情况需要经常使用MySQL,为了方便大家能够快速基于Docker搭建MySQL这里以Linux下为例 进行说明,对于Windows用户来说直接通过查看官网H ...
- .net 添加打印 源代码
<div style="margin-top: auto; text-align: center;" id="buttondiv"> <obj ...
- Java 悲观锁 synchronized (member){代码块}
Java 如果遇到会出现高并发的情况,一般建议使用悲观锁 :synchronized (member){代码块} 需要对数据库进行修改或新增的时候,建议写上事务--@Transactional @T ...
- mysql You can't specify target table 'sys_right_menu' for update in FROM clause (不能从Objor子句中指定目标表“SysRyType菜单)
错误语句: DELETE from sys_right_menu where right_id in (SELECT m.right_id from sys_right_menu mLEFT JO ...
- poj2187 Beauty Contest (凸包 + 旋转卡壳)
Beauty Contest Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 38349 Accepted: 11851 ...
- ServletResponse使用介绍
ServletResponse为将响应发送到客户端的对象:Servlet 容器创建 ServletResponse 对象,并将它作为参数传递给Servlet的service 方法,如下图 : Http ...
- 安装 WSL2、Ubuntu 及 docker(详细步骤)
本文链接:https://www.cnblogs.com/tujia/p/13438639.html 一.更新Windows版本 WSL 2 随着 Windows build 19041 而推出,能更 ...
- oracle基本学习
oracle目录及卸载 1.oracle的目录介绍: oradata:数据库存储文件的目录 db_home: network >admin:配置网络服务和监听器服务 jdk:oracle自带jd ...
- 04 . Go+Vue开发一个线上外卖应用(用户名密码和图形验证码)
图形化验证码生成和验证 功能介绍 在使用用户名和密码登录功能时,需要填写验证码,验证码是以图形化的方式进行获取和展示的. 验证码使用原理 验证码的使用流程和原理为:在服务器端负责生成图形化验证码,并以 ...