#asp-classic
#asp-classic
Вопрос:
Для моего приложения classic asp, развернутого в IIS6.0, мне нужно асинхронно внедрить ошибки ведения журнала в текстовый файл, чтобы ведение журнала отделяло приложения от ресурсов ведения журнала, позволяя приложению продолжать работать, когда базовая инфраструктура ведения журнала становится недоступной по какой-либо причине. Я прочитал в одном из ответов на вопросы аналогичного типа, что можно использовать xmlhttp. Есть ли другой способ? Пожалуйста, помогите
Ответ №1:
Какие ошибки вы хотите регистрировать?
Ошибка ASP? Затем вы должны запустить весь код с помощью ON ERROR RESUME NEXT Написать обработчик ошибок на каждом сайте. Например, вы можете включить их на все страницы через SSI includes.
Поскольку классический asp — это только многопоточная модель, вы не можете выполнять это асинхронно! Но вы можете написать компонент COM . У этого компонента есть метод, затем в котором вы предоставляете ошибку.номер, описание, источник ( , возможно, запрос.Серверные переменные («URL»)) БыВал, а затем быстрый возврат. Внутри компонента вы можете запустить поток asynchronus для записи файла журнала или записи ошибок в любую базу данных.
Не знаю наверняка, это ли то, что вы ищете, но если да, то именно так вы можете это сделать.
Ответ №2:
Не совсем то, что вы просили, но вот решение для ведения журнала ASP classic для Chrome, которое обеспечивает довольно последовательное взаимодействие с javascript console.log () и т.д… Ведение журнала вводит JS в ответ и регистрируется в консоли разработчика (F12) Модульный тест и пример использования — внутренние предостережения: избегайте ситуаций «сценарий внутри сценария»
<%
' log from ASP lines to chrome dev console - using the same javascript syntax
' ref: https://developers.google.com/web/tools/chrome-devtools/console/api#dir
' to add this to your asp page:
' <!--#Include file ="log.asp"-->
' sample usage - see unit test at bottom
' to turn logging ON, you have those options:
' console.active = true
' run on localhost
' add queryString log=1 (e.g. www.myweb.com?log=1)
class oConsole
private isActive
private oGroup
private mGroupLabel
private mGroupType
Private Sub Class_Initialize( )
isActive = (Request.ServerVariables("SERVER_NAME") = "localhost") or _
(request.queryString("log") = "1") or _
session("log")
set oGroup = nothing
end sub
Public Property Let active(a)
isActive = a
session("log") = cBool(a)
End Property
public property get active
active = isActive
end property
private sub script(func, text)
if not isActive then exit sub
text = replace(text, """", """")
if not oGroup is nothing then
oGroup.add oGroup.count, func amp; "(""" amp; text amp; """)"
else
Response.Write "<script language=javascript>console." amp; func amp; "(""" amp; text amp; """)</script>" amp; vbCrLf
end if
end sub
public sub log(Text)
script "log", Text
end sub
public sub Warn(w)
script "warn", w
end sub
public sub error(e)
if e = "" then e = "Error 0x" amp; hex(err.number) amp; " " amp; err.description
script "error", e
end sub
public sub assert(cond, message)
if not cond then script "assert", """,""" amp; message
end sub
public sub logVar(Variable)
log Variable amp; "=" amp; eval(Variable)
end sub
public sub clear
if not isActive then exit sub
response.write "<script language=javascript>console.clear()</script>" amp; vbCrLf
end sub
public sub group(label)
set oGroup = CreateObject("Scripting.Dictionary")
mGroupLabel = label
mGroupType = "group"
end sub
public sub groupCollapsed(label)
group label
mGroupType = "groupCollapsed"
end sub
public sub groupEnd
if isNull(oGroup) then exit sub
Response.Write "<script language=javascript>" amp; vbCrLf
response.write "console." amp; mGroupType amp; "(""" amp; mGroupLabel amp; """)" amp; vbCrLf
dim X
for each X in oGroup
response.write "console." amp; oGroup.item(X) amp; vbCrLf
next
response.write "console.groupEnd()" amp; vbCrLf
response.write "</script>" amp; vbCrLf
set oGroup = nothing
end sub
end class
dim console
set console = new oConsole
sub logTest
if not console.active then
console.active = true
console.clear
console.warn "logging activated for testing"
else
console.clear
end if
console.log "hello "
console.warn "warning"
console.error "error"
console.assert true, "should not see this"
console.assert false, "Assertion"
on error resume next
f=1/0
console.Error "" ' logs the Err object
on error goto 0
console.logVar "now"
console.groupCollapsed "My collapsed group"
console.log "L1"
console.warn "W1"
console.error "E1"
console.groupEnd
console.group "My group"
console.log "L1"
console.warn "W1"
console.error "E1"
console.groupEnd
console.active = false
console.error "can't see this"
console.active = true
console.log "should see that"
end sub
%>