在jsp中直接用log("...");就可以向Servlet引擎的日志中写东西。Tomcat4的默认的日志是每天每个类别一个文件,类别包括几种:
catalina_log:最高层的日志
localhost_access_log:主机连接日志
localhost_log:所有Context的日志
localhost_xxx_log:某个Context的日志,如果你用log("...");就写到这个里面
这些都是在server.xml配置文件中配的,你可以看看。
catalina_log:最高层的日志
localhost_access_log:主机连接日志
localhost_log:所有Context的日志
localhost_xxx_log:某个Context的日志,如果你用log("...");就写到这个里面
这些都是在server.xml配置文件中配的,你可以看看。
解决方案 »
- ztree异步加载显示结果为undefined,未执行后台处理页面
- myeclipse反向工程有什么缺点 公司不让用
- 有劳高手指点,webwork项目中,JSP页面fmt格式下el表达式显示的设置问题
- manik-hot-deploy 热部署的配置问题
- JAVASCRIPT 无法读取COOKIE
- 请大家帮忙运行一下这个小程序·不知道哪里的问题
- 得到resultset中的记录条数的方法有几种(在线等)
- 万分火急!!!在线等着给分!!100
- 如何在JSP中显示出汉字?
- 关于servlet的问题,请教各位!急!
- 如何在jsp中向applet传递实例?(在线等待)
- 那位大虾可以提供给我resin的license?
<%
log( "This is a test" );
%>
然后调用这个页面,你在Tomcat的日志localhost_examples_log.xxx中就会看到This is a test这段话。
2002-05-11 13:13:12 jsp: init
2002-05-11 13:13:51 jsp: init
2002-05-11 13:16:21 jsp: init
2002-05-11 13:17:58 jsp: init
2002-05-11 13:17:58 jsp: init
2002-05-11 13:17:58 jsp: init
2002-05-11 13:24:58 jsp: init
2002-05-11 13:28:59 jsp: init
2002-05-11 13:29:33 jsp: init
2002-05-11 13:31:19 jsp: init
2002-05-11 13:32:58 jsp: init
2002-05-11 13:33:17 jsp: init
2002-05-11 13:34:03 jsp: init
2002-05-11 13:40:47 jsp: init
2002-05-11 13:41:24 jsp: init
2002-05-11 13:41:51 jsp: init
2002-05-11 13:53:00 jsp: init
2002-05-11 14:01:13 jsp: init
2002-05-11 14:14:40 jsp: init
2002-05-11 14:17:02 jsp: init
2002-05-11 14:24:00 jsp: init
谢谢 jimjxr(宝宝猫),我已经试过了,可以的,
不过我现在是想分析日志,使其能够在网页上能够看到,并可根据用户名、登陆日期之类的查询日志。这怎么做呢??
日志的问题,我上面所说的是将程序运行状态记录下来的日志,一般包括时间和一段String。你的要求好像比较具体,似乎是用户行为的日志,能具体说说吗?用数据库记录有什么困难?
用数据库做的话,有一个问题就是不能确定用户退出系统的准备时间(即非正常退出系统,如直接关闭浏览器,)并进行相应的一些操作。
我是最近才看到TOMCAT4的日志与以前不同了,所以想看看是不是用它会更好做些。
这里有个方法:建立一个Application变量 i,记录某一用户名的当前session数。如果用户登陆则通过监听器知道,如果用户退出(不管是怎样退出,只要是该session丢失),也会通过监听器知道。这样就可以在登陆是给i加1,退出时减1了;
这里的关键是通过session的建立与取消监听来操作i值
但临听器怎么做呢????哪位能给个例子。
import java.util.*;
public class UserList {
//所有的用户名
private HashMap UserList;
public UserList()
{
UserList = new HashMap();
}
/**
*取得一个包含当前用户信息的迭代器
*@return 包含当前用户名信息的Iterator类型对象
*@see java.util.Iterator
*/
public Iterator getUserList()
{
//将超时用户踢出列表
//removeOverdue();
//构建一个迭代嚣并返回
HashMap returnUserList = new HashMap(UserList);
Set returnUserSet = returnUserList.keySet();
Iterator returnUserIterator = returnUserSet.iterator();
return returnUserIterator;
}
/**
*监测用户是否在用户列表中
*/
public boolean isUserOnLine(String userName)
{
//将超时用户踢出列表
//removeOverdue();
return UserList.containsKey(userName);
}
/**
*将用户加入到此用户列表中
*@param userName 需要加入的用户名
*/
public void addUser(String id,String userName,String userPic)
{
//获得当前时间
Vector userInfo=new Vector(3);
Date dateTimeNow = new Date();
long longTimeNow = dateTimeNow.getTime();
Long longOTimeNow = new Long(longTimeNow);
userInfo.add(id);
userInfo.add(userPic);
userInfo.add(longOTimeNow);
//将用户最近一次发出的时间存储起来
UserList.put(userName,userInfo);
}
/*将用户踢出列表
*/
public void removeOverdue(String username)
{
UserList.remove(username);
}
}不过有问题:(1)在JSP中调用时在一个窗口中能实现,但重开一个窗口登录,就不起作用了,换台机子试就更不用提了,怎么回事呢??
(2)我在注销页面中用removeOverdue方法怎么提示无此方法呢?