web 接口 调用 记日志

        //获取请求参数信息 放在 public class ApiBaseController : Controller 里
        protected string PostParameter()
        {
            var byts = new byte[System.Web.HttpContext.Current.Request.InputStream.Length];
            System.Web.HttpContext.Current.Request.InputStream.Read(byts, 0, byts.Length);
            return System.Text.Encoding.UTF8.GetString(byts);
        }


namespace Sixcom.Common
{
    public class LogHelp
    {

        private static string UsePath;

        static LogHelp()
        {

                UsePath = AppDomain.CurrentDomain.BaseDirectory + @"Logs\";
          
        }


        /// <summary>
        /// 保存日志
        /// </summary>
        /// <param name="msg">要记录的信息</param>
        /// <param name="subfolder">保存路径的子文件夹( 多级之间用 '\' 分隔 例如:Car\info)</param>
        public static void Log(LogType type, string msg,string subfolder = "")
        {
            StreamWriter sw = null;
            try
            {
                //判断是否有子文件夹
                if (!string.IsNullOrWhiteSpace(subfolder))
                {
                    subfolder = subfolder + @"\";
                }

                string modules = $@"{UsePath}{subfolder}{type.ToString()}\";

                if (!Directory.Exists(modules))
                {
                    Directory.CreateDirectory(modules);
                }
                //文件名称
                string fileName = string.Format($"{DateTime.Now.Date.ToString("yyyyMMdd")}.txt");
                //日志路径+文件名 = 完全全路径
                string FullPath = Path.Combine(modules, fileName);
                sw = File.AppendText(FullPath);
                sw.WriteLine($"{DateTime.Now}   {msg}" );
                sw.WriteLine($"******************************");
            }
            catch (Exception ex)
            {
                //日志异常不捕获,不影响程序 流程
                //throw;
            }
            finally
            {
                if (sw != null)
                {
                    sw.Flush();
                    sw.Close();
                    sw.Dispose();
                }
            }
        }


        

    }

    /// <summary>
    /// 记录类型
    /// </summary>
    public enum LogType
    {

        /// <summary>
        /// 警告信息
        /// </summary>
        Debug = 0,

        /// <summary>
        /// 一般信息
        /// </summary>
        Info = 1,

        /// <summary>
        /// 警告信息
        /// </summary>
        Warn = 2,

        /// <summary>
        /// 异常信息
        /// </summary>
        Error = 3,

        /// <summary>
        /// 致命错误
        /// </summary>
        Fatal = 4,


    }

}



                //记录调用信息
                LogHelp.Log(LogType.Info, $@"【url】:{Request.RawUrl}
【参数】:{ PostParameter()}", @"ShopApi");

//打印后的效果如下:
//            2018 / 5 / 3 16:59:18   【url】:/ ShopApiOrder / GetOreturnStatusByCode
//【参数】:UnionId = 1 & CompanyId = 3 & ShopId = -1 & UserId = 66 & Code = XST1000218010500004
//* *****************************

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在FastAdmin中,可以通过自定义拦截器来调用接口日志。 1. 创建一个实现了HandlerInterceptor接口的拦截器类,例如: ``` import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @Component public class ApiLogInterceptor implements HandlerInterceptor { private static final Logger logger = LoggerFactory.getLogger(ApiLogInterceptor.class); @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { logger.info("API request: {} {}", request.getMethod(), request.getRequestURI()); return true; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { // do nothing } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { logger.info("API response: {} {}", response.getStatus(), response.getContentType()); } } ``` 这里的拦截器录了API请求的方法、URI等信息,并在请求完成后录了响应的状态码和内容类型。 2. 在配置文件中配置拦截器,例如: ``` spring.mvc.interceptors=org.example.ApiLogInterceptor ``` 这里配置了ApiLogInterceptor拦截器。 3. 可以使用Slf4j等日志框架来日志,也可以使用logback等日志框架的配置文件来配置日志输出位置、格式等信息。 这样,就可以单独调用接口日志了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值