Archive for 12月 6th, 2007

给wordpress加上记录Combined格式日志的功能

星期四, 12月 6th, 2007

由于我是合租的web主机,因此开通的ftp里没权限看到站点的access.log,

由于wordpress是通过.htaccess中配置的urlrewrite将http请求重定向到index.php 这个入口,

因此只要在index.php里加上记录日志的操作,基本上大部分请求都可以记录下来,

查了下资料,没看见现成的代码,于是对照着 Combined各式的日志,

自己写了一段代码来实现这个功能.

代码如下:

[code]

<?php
/* Short and sweet */
define(’WP_USE_THEMES’, true);
/**
为我的wordpress增加记录web日志的功能
author: lizongbo
site: http://618119.com
*/

$webaccesslog=”webaccess”.gmdate(”Y-m-d”).”.log”;
$accesslog=$_SERVER['REMOTE_ADDR'].” - - “.gmdate(”[d/M/Y:H:i:s +0800] “);
$accesslog=$accesslog.”\”".$_SERVER["REQUEST_METHOD"].” “.$_SERVER["REQUEST_URI"].” “;
$accesslog=$accesslog.$_SERVER["SERVER_PROTOCOL"].”\”";
$accesslog=$accesslog.” 200 2007 \”";
if(!empty($_SERVER["HTTP_REFERER"])){
$accesslog=$accesslog.$_SERVER["HTTP_REFERER"];
}else{
$accesslog=$accesslog.”-”;
}
$accesslog=$accesslog.”\” \”".$_SERVER["HTTP_USER_AGENT"].”\”".”\r\n”;
$webaccess=fopen($webaccesslog,”a”);
fwrite($webaccess,$accesslog);
/*下面的写法 io 操作太多,被废弃了
fwrite($webaccess,$_SERVER['REMOTE_ADDR']);
fwrite($webaccess,” - - “);
fwrite($webaccess,gmdate (”[d/M/Y:H:i:s +0800] “));//不知道怎么加时区,于是写死了
fwrite($webaccess,”\”");
fwrite($webaccess,$_SERVER["REQUEST_METHOD"]);
fwrite($webaccess,” “);
fwrite($webaccess,$_SERVER["REQUEST_URI"]);
fwrite($webaccess,” “);
fwrite($webaccess,$_SERVER["SERVER_PROTOCOL"]);
fwrite($webaccess,”\”");
fwrite($webaccess,” 200 2007 \”");//强行写死了状态码和内容长度
if(!empty($_SERVER["HTTP_REFERER"])){
fwrite($webaccess,$_SERVER["HTTP_REFERER"]);
}else{
fwrite($webaccess,”-”);
}
fwrite($webaccess,”\” \”");
fwrite($webaccess,$_SERVER["HTTP_USER_AGENT"]);
fwrite($webaccess,”\”");
fwrite($webaccess,”\r\n”);
*/

fclose($webaccess);
require(’./wp-blog-header.php’);
?>

[/code]

这样,记录下来的日志就可以通过ftp下载到本地,然后再用 awstats 进行分析了.

Tags: 618119.com, Apache, log, php, Wordpress

Related posts

用Spring,smppapi,apache mina, commons ssl快速实现安全的smpp smsc (四)

星期四, 12月 6th, 2007

接上一篇: http://618119.com/archives/2007/12/03/35.html

对 SMPPPacket的业务处理代码:

1.处理 BIND_RECEIVER消息

[code]

package com.lizongbo.smpp.server.handlers;

import org.apache.mina.common.*;
import com.lizongbo.smpp.server.*;
import ie.omk.smpp.*;
import ie.omk.smpp.message.*;
import ie.omk.smpp.message.tlv.*;
import ie.omk.smpp.util.*;
import ie.omk.smpp.version.*;

/**
*
* <p>Title: BindReceiver Handler</p>
*
* <p>Description: smpp BIND_RECEIVER</p>
*
* <p>Copyright: Copyright (c) 2007</p>
*
* <p>Company: http://618119.com </p>
*
* @author lizongbo
* @version 1.0
*/
public class BindReceiverHandler
implements SMPPPacketHandler {
public void process(IoSession session, SMPPPacket packet) throws
BadCommandIDException {
BindReceiver msg = (BindReceiver) packet;
System.out.println(”sysId=” + msg.getSystemId());
System.out.println(”password=” + msg.getPassword());
//在这里判断账号和密码是否正确
System.out.println(”sysType=” + msg.getSystemType());
System.out.println(”interfaceVer=” + msg.getInterfaceVersion());
System.out.println(”addrTon=” + msg.getAddressTon());
System.out.println(”addrNpi=” + msg.getAddressNpi());
System.out.println(”addressRange=” + msg.getAddressRange());

BindReceiverResp res = (BindReceiverResp) PacketFactory.
newInstance(SMPPPacket.BIND_RECEIVER_RESP);
res.setCommandStatus(0);
res.setSequenceNum(packet.getSequenceNum());
res.setSystemId(”smsc.618119.com”);
res.setOptionalParameter(Tag.SC_INTERFACE_VERSION,
SMPPVersion.getDefaultVersion().getVersionID());
session.write(res);
}

}

[/code]

2.处理BIND_TRANSMITTER消息

[code]

package com.lizongbo.smpp.server.handlers;

import org.apache.mina.common.*;
import com.lizongbo.smpp.server.*;
import ie.omk.smpp.*;
import ie.omk.smpp.message.*;
import ie.omk.smpp.message.tlv.*;
import ie.omk.smpp.util.*;
import ie.omk.smpp.version.*;
/**
*
* <p>Title: BindTransmitter Handler</p>
*
* <p>Description: smpp BIND_TRANSMITTER</p>
*
* <p>Copyright: Copyright (c) 2007</p>
*
* <p>Company: http://618119.com </p>
*
* @author lizongbo
* @version 1.0
*/
public class BindTransmitterHandler
implements SMPPPacketHandler {
public void process(IoSession session, SMPPPacket packet) throws
BadCommandIDException {
BindTransmitter msg = (BindTransmitter) packet;
System.out.println(”sysId=” + msg.getSystemId());
System.out.println(”password=” + msg.getPassword());
System.out.println(”sysType=” + msg.getSystemType());
System.out.println(”interfaceVer=” + msg.getInterfaceVersion());
System.out.println(”addrTon=” + msg.getAddressTon());
System.out.println(”addrNpi=” + msg.getAddressNpi());
System.out.println(”addressRange=” + msg.getAddressRange());

BindTransmitterResp res = (BindTransmitterResp) PacketFactory.
newInstance(SMPPPacket.BIND_TRANSMITTER_RESP);
res.setCommandStatus(msg.getCommandStatus());
res.setSequenceNum(packet.getSequenceNum());
res.setSystemId(”smsc.618119.com”);
res.setOptionalParameter(Tag.SC_INTERFACE_VERSION,
SMPPVersion.getDefaultVersion().getVersionID());
session.write(res);
}

}
[/code]

3.处理DELIVER_SM_RESP,SUBMIT_SM,UNBIND消息的代码片断.

[code]

public void process(IoSession session, SMPPPacket packet) throws
BadCommandIDException {
DeliverSMResp msg = (DeliverSMResp) packet;
System.out.println(”收到确认的消息编号:” + msg.getMessageId());
}

public void process(IoSession session, SMPPPacket packet) throws
BadCommandIDException {
SubmitSM msg = (SubmitSM) packet;

System.out.println(”serviceType=” + msg.getServiceType());
System.out.println(”source=” + msg.getSource());
System.out.println(”destination=” + msg.getDestination());
System.out.println(”esmClass=” + msg.getEsmClass());
System.out.println(”protocolID=” + msg.getProtocolID());
System.out.println(”priority=” + msg.getPriority());
System.out.println(”delivery=” + msg.getDeliveryTime());

System.out.println(”expiryTime=” + msg.getExpiryTime());
System.out.println(”registered=” + msg.getRegistered());
System.out.println(”replaceIfPresent=” + msg.getReplaceIfPresent());
System.out.println(”dataCoding=” + msg.getDataCoding());
System.out.println(”defaultMsg=” + msg.getDefaultMsg());
System.out.println(”message=” + new String(msg.getMessage()));
SubmitSMResp res = (SubmitSMResp) PacketFactory.
newInstance(SMPPPacket.SUBMIT_SM_RESP);
res.setCommandStatus(0);
res.setSequenceNum(packet.getSequenceNum());
res.setMessageId(”11233″);
session.write(res);
}

public void process(IoSession session, SMPPPacket packet) throws
BadCommandIDException {
Unbind msg = (Unbind) packet;
UnbindResp res = (UnbindResp) PacketFactory.
newInstance(SMPPPacket.UNBIND_RESP);
res.setCommandStatus(0);
res.setSequenceNum(packet.getSequenceNum());
session.write(res);
}

[/code]

Tags: apache mina, commons ssl, smpp, smppapi, smsc, spring, 短信

Related posts