1

application.cfm にロギング機能 (cflog は使用できません) が含まれており、.cfm ページはこれにアクセスできますが、使用するコンポーネントで「Variable LOGGER is undefined.」というメッセージが表示されます。エラー。

アプリケーション.cfm

<cfinclude template="logging.cfm">

ロギング.cfm

<cffunction name="logger" >
 ...
</cffunction>

私が間違っていることについてのアイデアはありますか?

4

1 に答える 1

10

コンポーネントが機能する方法は、コンポーネントがvariablesそれ自体の外側の ""スコープを認識できないことであり、あなたが<cfinclude>あなたの場合logging.cfm、それはそれらの関数をページの可変スコープに含めているからです。コンポーネントがこれらの関数を呼び出すには、次のようにします。

<cfinclude template="logging.cfm">

<cfset request.logger = variables.logger>

そして、あなたの中<cfcomponent>で、あなたはを呼び出すことができますrequest.logger(whatever)

しかし、正直なところ、これは私には逆に感じます。代わりに、「log」という名前の関数が含まれているのはなぜLogger.cfcですか。何かをログに記録したい場合は、次のようにします。

<cfinvoke component="my.Logger" method="log" message="#mylogmessage#">
于 2009-07-21T21:40:17.507 に答える