<commit_before>// Copyright 2016 by caixw, All rights reserved.
// Use of this source code is governed by a MIT
// license that can be found in the LICENSE file.

package context

import (
	"net/http"

	"github.com/issue9/logs"
	"github.com/issue9/web/errors"
)

// Critical 输出一条日志到 CRITICAL 日志通道，
// 并向用户输出一个指定状态码的页面。
// 若是输出日志的过程中出错，则 panic
func (ctx *Context) Critical(status int, v ...interface{}) {
	logs.CRITICAL().Output(2, errors.TraceStack(2, v...))

	ctx.RenderStatus(status)
}

// Error 输出一条日志到 ERROR 日志通道，
// 并向用户输出一个指定状态码的页面。
// 若是输出日志的过程中出错，则 panic
func (ctx *Context) Error(status int, v ...interface{}) {
	logs.ERROR().Output(2, errors.TraceStack(2, v...))

	ctx.RenderStatus(status)
}

// Critical 输出一条日志到 CRITICAL 日志通道，
// 并向用户输出一个指定状态码的页面。
// 若是输出日志的过程中出错，则 panic
func Critical(w http.ResponseWriter, status int, v ...interface{}) {
	logs.CRITICAL().Output(2, errors.TraceStack(2, v...))

	RenderStatus(w, status)
}

// Error 输出一条日志到 ERROR 日志通道，
// 并向用户输出一个指定状态码的页面。
// 若是输出日志的过程中出错，则 panic
func Error(w http.ResponseWriter, status int, v ...interface{}) {
	logs.ERROR().Output(2, errors.TraceStack(2, v...))

	RenderStatus(w, status)
}

// Panic 以指定的状态码抛出异常
//
// 与 Error 的不同在于：<commit_msg>添加 context.Panic 方法<commit_after>// Copyright 2016 by caixw, All rights reserved.
// Use of this source code is governed by a MIT
// license that can be found in the LICENSE file.

package context

import (
	"net/http"

	"github.com/issue9/logs"
	"github.com/issue9/web/errors"
)

// Critical 输出一条日志到 CRITICAL 日志通道，
// 并向用户输出一个指定状态码的页面。
// 若是输出日志的过程中出错，则 panic
func (ctx *Context) Critical(status int, v ...interface{}) {
	logs.CRITICAL().Output(2, errors.TraceStack(2, v...))

	ctx.RenderStatus(status)
}

// Error 输出一条日志到 ERROR 日志通道，
// 并向用户输出一个指定状态码的页面。
// 若是输出日志的过程中出错，则 panic
func (ctx *Context) Error(status int, v ...interface{}) {
	logs.ERROR().Output(2, errors.TraceStack(2, v...))

	ctx.RenderStatus(status)
}

// Panic 以指定的状态码抛出异常
//
// 与 Error 的不同在于：
// Error 不会主动退出当前协程，而 Panic 则会触发 panic，退出当前协程。
func (ctx *Context) Panic(status int) {
	Panic(status)
}

// Critical 输出一条日志到 CRITICAL 日志通道，
// 并向用户输出一个指定状态码的页面。
// 若是输出日志的过程中出错，则 panic
func Critical(w http.ResponseWriter, status int, v ...interface{}) {
	logs.CRITICAL().Output(2, errors.TraceStack(2, v...))

	RenderStatus(w, status)
}

// Error 输出一条日志到 ERROR 日志通道，
// 并向用户输出一个指定状态码的页面。
// 若是输出日志的过程中出错，则 panic
func Error(w http.ResponseWriter, status int, v ...interface{}) {
	logs.ERROR().Output(2, errors.TraceStack(2, v...))

	RenderStatus(w, status)
}

// Panic 以指定的状态码抛出异常
//
// 与 Error 的不同在于：
{'fraction_non_alphanumeric': 0.1554605518849592, 'fraction_numerical': 0.010882238631947143, 'mean_word_length': 3.8566037735849057, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1598421', 'n_tokens_mistral': 1209, 'n_tokens_neox': 1285, 'n_words': 241}